相关疑难解决方法(0)

了解C#字段初始化要求

考虑以下代码:

public class Progressor
{
    private IProgress<int> progress = new Progress<int>(OnProgress);

    private void OnProgress(int value)
    {
        //whatever
    }
}
Run Code Online (Sandbox Code Playgroud)

这会在编译时出现以下错误:

字段初始值设定项不能引用非静态字段,方法或属性'Progressor.OnProgress(int)'

我理解它所抱怨的限制,但我不明白为什么它是一个问题,但该字段可以在构造函数中初始化,如下所示:

public class Progressor
{
    private IProgress<int> progress;

    public Progressor()
    {
         progress =  new Progress<int>(OnProgress);
    }

    private void OnProgress(int value)
    {
        //whatever
    }
}
Run Code Online (Sandbox Code Playgroud)

关于字段初始化与构造函数初始化需要此限制的C#有什么区别?

c# initialization

33
推荐指数
4
解决办法
2851
查看次数

标签 统计

c# ×1

initialization ×1