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构造函数,给全部字段赋上默认值。方法

相关文章
相关标签/搜索