0%

C# Object Initialization

1. 概述

为了简化对象初始化的流程,C# 提供了 对象初始化语法

简单的来说就是通过类似 数组初始化 的方法来对变量进行初始化操作。

2. 语法

Point p = new Point {x = 1.0, y = 2.0};

3. 原理

此语法实际上是一个语法糖,其原理就是先调用 默认构造函数,然后再对每个属性或者字段 依次赋值

和以下代码行为相同。

Point point = new Point();
point.x = 1.0;
point.y = 2.0;

4. 调用自定义构造函数

对象初始化块除了调用默认的构造函数以外,还可以调用自定义的构造函数。

Point point = new Point("This is a point") {x = 1.0, y = 2.0};

5. 初始化内部引用属性

由于自动属性默认为引用类型赋值为 null ,所以内部的属性必须经过正确的初始化之后才能使用。

为了简化繁琐的声明语句, C# 也提供了对内部引用属性的初始化语法

Rectangle rect = new Rectangle
{
    TopLeft = new Point { X = 10, Y = 10 },     // 注意逗号
    BottomRight = new Point { X = 200, Y = 200 }
};  // 注意分号

其行为和如下代码相同:

Rectangle rect = new Rectangle();

Point p1 = new Point();
p1.X = 10;
p1.Y = 10;
rect.TopLeft = p1;

Point p2 = new Point();
p2.X = 200;
p2.Y = 200;
rect.BottomRight = p2;