首页 > 解决方案 > 字段初始化不能引用非静态字段?如何解决它?

问题描述

我指的是 [C# concurrency in action] 一书中的一些代码,该章有以下代码片段:

int _v1;
readonly Lazy<int> Myv1 = new Lazy<int>(() => _v1++);//error
void UseV1()
{
    Console.WriteLine(Myv1.Value);
}

int _v2;
readonly Lazy<Task<int>> Myv2 = new Lazy<Task<int>>(async () =>//error
{
    await Task.Delay(2).ConfigureAwait(false);
    return _v2++;
});

它不编译,说

error CS0236: A field initializer cannot reference the non-static field, method, or property 'Program._v1'

为什么会发生此规则,如何解决或解决此问题?非常感谢。

标签: c#staticinitializationfield

解决方案


推荐阅读