扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
以前我们在声明数组时,可以同时对其进行初始化,这样就省去了很多麻烦,但是在创建类的对象时,这招可就不灵了,我们要么调用该类的构造函数完成对象的初始化,要么就手工进行初始化。这两种方法都不太方便,使用构造函数来对对象进行初始化时,我们为了某种灵活性,可能需要编写构造函数的多个重载版本,实在是麻烦。
具体示例如下:
以下是引用片段: class Point { public int X { get; set; } public int Y { get; set; } public override string ToString() { return "(" + X.ToString() + ", " + Y.ToString() + ")"; } } class Rectangle { public Point P1 { get; set; } public Point P2 { get; set; } public Rectangle() { P1 = new Point(); P2 = new Point(); } public override string ToString() { return "P1: " + P1 + ", P2: " + P2; } } class ObjectBuilder : AppRunner.AbstractApplication { public override void Run() { Point thePoint = new Point() { X = 1, Y = 2 }; Console.WriteLine("Point(X, Y) = {0}", thePoint); Rectangle theRectangle = new Rectangle() { P1 = { X = 1, Y = 1 }, P2 = { X = 100, Y = 200 } }; Console.WriteLine(theRectangle); } } |
我们在定义Point类的X和Y属性时,只须写上该属性的get和set访问器声明,C#编译器会自动为我们生成默认的get和set操作代码,当我们需要定义简单属性时,这个特性非常有用。
我们以new Point() { X = 1, Y = 2 }语句,轻松的完成了对Point类的初始化工作。在创建类的对象时,我们可以按照需要去初始化类的对象,只要在类的创建表达式后跟上要初始化属性的列表即可,且可以只对需要初始化的属性赋初值,而无需把所有属性的初始值都写上去。
在theRectangle对象的初始化表达式中,我们首先对P1属性进行初始化,然而P1属性也是一个自定义的类型,所以P1属性的初始化是另一个类型(Point)的初始化表达式,我们可以这样的方式来对更加复杂的类型进行初始化。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者