標籤:style color os 使用 ar sp on c line
假設有這樣一個實值型別struct。
public struct Size
{
public int Length;
public int Width;
public int Area()
{
return Length*Width;
}
}
□ 用戶端,給所有struct欄位初始化後調用方法
class Program
{
static void Main(string[] args)
{
Size size;
size.Length = 10;
size.Width = 5;
Console.WriteLine(size.Area());
Console.ReadKey();
}
}
結果:50
□ 用戶端,給部分struct欄位初始化
class Program
{
static void Main(string[] args)
{
Size size;
size.Length = 10;
Console.WriteLine(size.Area());
Console.ReadKey();
}
}
結果:報錯,使用了未賦值的局部變數。
可見:如果想調用struct執行個體的任何方法,需要給struct的所有欄位初始化。
□ 用戶端,通過建構函式初始化struct
class Program
{
static void Main(string[] args)
{
Size size = new Size();
Console.WriteLine(size.Area());
Console.ReadKey();
}
}
結果:0
在這裡:通過struct建構函式建立執行個體,實際上是給struct的所有欄位賦上了初值0。
總結:在調用struct執行個體方法之前,必須給struct的所有欄位賦上初值,即要求完全初始化,部分初始化是不允許的。要麼通過"struct執行個體.欄位名"給所有欄位顯式賦值,要麼通過struct建構函式,給所有欄位賦上預設值。
C#中結構(struct)的部分初始化和完全初始化