我正在审查一些我不认识的对象初始化模式的代码 - 谁能告诉我这个模式叫什么(以及在哪里可以找到有关使用的文档)?
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());
...
}
最佳答案
它只是将相同的值分配两次 - 一次分配给 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)
{
...
}
关于c# - 这个对象初始化器模式叫什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36493525/