假設有這樣一個值類型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構造函數,給所有字段賦上默認值。