我有一个带有静态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
在第二个。
我知道静态成员无法访问实例数据(请参阅此问题)。但据我了解,nameof
在编译时进行评估并且只访问元数据而不是实例数据。那么为什么这不起作用,有没有办法呢?