我意识到还有其他方法可以给这只猫剥皮,但我希望有人能帮助我理解为什么在 C# 中,当内联实例化“主”对象时,我不能直接设置子类属性。
例如,如果我有以下课程:
public class SubClass
{
public string SubField { get; set; }
}
public class MainClass
{
public string MainField { get; set; }
public SubClass Sub { get; set; }
public MainClass()
{
Sub = new SubClass();
}
}
如果我尝试以下操作,我会收到错误:
var main = new MainClass
{
MainField = "Main Value",
Sub.SubField = "Sub Value"
};
我在“Sub.SubField = ...”行得到的错误是:
* "Invalid initializer member declarator"
* "The name 'Sub' does not exist in the current context"
当然,以下是有效的:
var main = new MainClass
{
MainField = "Main Value",
Sub = new SubClass { SubField = "Sub Value" }
};
但是,它更麻烦,而且在我看来,封装更少。
我很困惑为什么 C# 不能识别声明的对象和/或它如何知道它没有被实例化。在其他情况下就没有那么小心了。
我确定我错过了一个主要概念。有没有人来开导我?提前致谢!