C#中加入的对象构造者特性使得对象的初始化工作变得格外简单我们可以采用类似于数组初始化的方式来初始化类的对象方法就是直接在创建类对象的表达式后面跟上类成员的初始化代码
以前我们在声明数组时可以同时对其进行初始化这样就省去了很多麻烦但是在创建类的对象时这招可就不灵了我们要么调用该类的构造函数完成对象的初始化要么就手工进行初始化这两种方法都不太方便使用构造函数来对对象进行初始化时我们为了某种灵活性可能需要编写构造函数的多个重载版本实在是麻烦
具体示例如下
以下是引用片段
以下是引用片段 class Point { public int X { get; set; } public int Y { get; set; } public override string ToString() { return ( + XToString() + + YToString() + ); } } class Rectangle { public Point P { get; set; } public Point P { get; set; } public Rectangle() { P = new Point(); P = new Point(); } public override string ToString() { return P: + P + P: + P; } } class ObjectBuilder : AppRunnerAbstractApplication { public override void Run() { Point thePoint = new Point() { X = Y = }; ConsoleWriteLine(Point(X Y) = {} thePoint); Rectangle theRectangle = new Rectangle() { P = { X = Y = } P = { X = Y = } }; ConsoleWriteLine(theRectangle); } }
我们在定义Point类的X和Y属性时只须写上该属性的get和set访问器声明C#编译器会自动为我们生成默认的get和set操作代码当我们需要定义简单属性时这个特性非常有用
我们以new Point() { X = Y = }语句轻松的完成了对Point类的初始化工作在创建类的对象时我们可以按照需要去初始化类的对象只要在类的创建表达式后跟上要初始化属性的列表即可且可以只对需要初始化的属性赋初值而无需把所有属性的初始值都写上去
在theRectangle对象的初始化表达式中我们首先对P属性进行初始化然而P属性也是一个自定义的类型所以P属性的初始化是另一个类型(Point)的初始化表达式我们可以这样的方式来对更加复杂的类型进行初始化