C#中結構(struct)的部分初始化和徹底初始化

假設有這樣一個值類型struct。函數

    public struct Size
    {
        public int Length;
        public int Width;
        public int Area()
        {
            return Length*Width;
        }
    }

 

□ 客戶端,給全部struct字段初始化後調用方法spa

    class Program
    {
        static void Main(string[] args)
        {
            Size size;
            size.Length = 10;
            size.Width = 5;
            Console.WriteLine(size.Area());
            Console.ReadKey();
        }
    }    

結果:50string

 

□ 客戶端,給部分struct字段初始化it

    class Program
    {
        static void Main(string[] args)
        {
            Size size;
            size.Length = 10;
            Console.WriteLine(size.Area());
            Console.ReadKey();
        }
    }

結果:報錯,使用了未賦值的局部變量。 
可見:若是想調用struct實例的任何方法,須要給struct的全部字段初始化。 
class

 

□ 客戶端,經過構造函數初始化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構造函數,給全部字段賦上默認值。方法

相關文章
相關標籤/搜索