結構
struct
型別是一種值型別,通常用於封裝一小組相關變數,例如矩形的座標或庫存中專案的特徵。
類是引用型別,結構是值型別。
using static System.Console;
namespace ConsoleApplication1
{
struct Point
{
public int X;
public int Y;
public override string ToString()
{
return $"X = {X}, Y = {Y}";
}
public void Display(string name)
{
WriteLine(name + ": " + ToString());
}
}
class Program
{
static void Main()
{
var point1 = new Point {X = 10, Y = 20};
// it's not a reference but value type
var point2 = point1;
point2.X = 777;
point2.Y = 888;
point1.Display(nameof(point1)); // point1: X = 10, Y = 20
point2.Display(nameof(point2)); // point2: X = 777, Y = 888
ReadKey();
}
}
}
結構也可以包含建構函式,常量,欄位,方法,屬性,索引器,運算子,事件和巢狀型別,但如果需要多個此類成員,則應考慮將型別設定為類。
MS 對何時使用 struct 以及何時使用類的一些建議 :
考慮
如果型別的例項很小並且通常是短暫的或通常嵌入在其他物件中,則定義結構而不是類。
避免
定義結構,除非該型別具有以下所有特徵:
- 它在邏輯上表示單個值,類似於原始型別(int,double 等)
- 它的例項大小小於 16 個位元組。
- 這是不可改變的。
- 它不必經常裝箱。