List<T>
静的フィールドと非静的フィールドを持つクラスがあります。次に、このリストを次のようなオブジェクトで初期化したいと思います。
class C
{
private Bar bar;
private static List<Foo> list = new List<Foo>()
{
new Foo(nameof(bar)), // OK
new Foo(nameof(bar) + nameof(bar.Baz)) // Error CS0236
};
}
最初のFoo
オブジェクトの作成は正常に機能しますが、エラーが発生します
フィールド初期化子は、非静的フィールド、メソッド、またはプロパティ C.bar を参照できません
2番目に。
静的メンバーがインスタンス データにアクセスできないことは承知しています (この質問を参照してください)。しかし、私が理解している限りでnameof
は、コンパイル時に評価され、メタデータのみにアクセスし、インスタンス データにはアクセスしません。では、なぜこれが機能しないのでしょうか。回避策はありますか?