首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 結構與枚舉入門:輕量級資料封裝的選擇

     編輯:關於C語言

為什麼需要結構?

當我們需要封裝一小組相關資料(如書籍資訊、座標點、日期範圍)時,類別雖然可行,但作為參考型別會帶來堆積配置、垃圾回收壓力與參考語意。結構 作為實值型別,提供了更輕量、語意更清晰的替代方案。

1. 使用類別封裝書籍資料

public class Books
{
    public int BookId;
    public string BookName;
    public string BookAuthor;
    public double BookPrice;
}

每次 new Books() 都在堆積配置,傳遞時傳的是參考,修改會影響原物件。

2. 使用結構封裝相同資料

public struct Book
{
    public int BookId;
    public string BookName;
    public string BookAuthor;
    public double BookPrice;
}

結構實例直接儲存資料,指派給新變數會完整複製所有欄位,互不干擾:


var b1 = new Book { BookId = 1, BookName = "C# 指南" };
var b2 = b1; // 實值複製
b2.BookName = "Java 指南";
Console.WriteLine(b1.BookName); // "C# 指南" — 未受影響

3. 結構的進階能力

  • 包含方法、屬性、索引子、運算子多載
  • 實作介面(支援多型)
  • 定義建構函式(僅帶參數)
  • 可作為泛型型別參數、陣列元素、欄位內嵌

4. 何時選擇結構?

符合所有條件時建議使用:

  • 單純代表單一資料值(如 Point、Money、DateRange)
  • 實例大小 < 16 bytes(參考:DateTime 16 bytes)
  • 不可變或邏輯上不可變
  • 不需繼承、不頻繁裝箱

5. 枚舉的定位

枚舉用於「有限固定選項集合」;結構用於「攜帶少量相關資料的單一值」。兩者皆為實值型別,互補而非替代。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved