この猫のスキンを作成する方法は他にもあると思いますが、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#が宣言されたオブジェクトを認識しない理由や、インスタンス化されていないことをC#が認識する方法に戸惑います。他の状況ではそれほど注意しません。
私は主要な概念を見逃していると確信しています。私を啓発するまでの誰か?前もって感謝します!