C#中結構(struct)的部分初始化和完全初始化


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM