这个对象初始化模式叫什么?

时间:2016-04-08 07:04:28

标签: c#

我正在审核一些我不认识的对象初始化模式的代码 - 有人能告诉我这种模式的用途(以及在哪里可以找到使用文档)?

obj.myType = (myVar = new MyType());

如果重要,具体用例如下;

protected MyType myVar;
protected readonly MyComplexType myComplexType;

protected void Page_Init(object sender, EventArgs e)) {
    ...
    myComplexType.myType = (myVar = new MyType());
    ...
}

1 个答案:

答案 0 :(得分:19)

它只是分配相同的值两次 - 一次到myVar,一次到myComplexType.myType

相当于

var tmp = new MyType();
myVar = tmp;
myComplexType.myType = tmp;

(在某些复杂的情况下,可能会有类型转换,但我不认为在这种特殊情况下会有任何转换。)

当然,您不需要使用额外的局部变量。此代码“有些相同”但涉及从myVar读取,因此完全相同,但更有可能是您使用的内容:

myVar = new MyType();
myComplexType.myType = myVar;

没有特定的名称,并且相对很少使用表达式中其他位置的赋值结果,最常见的例子是:

string line;
while ((line = reader.ReadLine()) != null)
{
    ...
}