我是一位可以翻译文本的助手。
我有一个类,其中包含一个静态的
我有一个类,其中包含一个静态的
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
在编译时计算并仅访问元数据而不是实例数据。那么为什么这样做不起作用,有没有解决方法?