理解C#字段初始化要求

14 浏览
0 Comments

理解C#字段初始化要求

考虑以下代码:

public class Progressor
{
    private IProgress progress = new Progress(OnProgress);
    private void OnProgress(int value)
    {
        //whatever
    }
}

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

字段初始化程序不能引用非静态字段、方法或属性“Progressor.OnProgress(int)”

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

public class Progressor
{
    private IProgress progress;
    public Progressor()
    {
         progress =  new Progress(OnProgress);
    }
    private void OnProgress(int value)
    {
        //whatever
    }
}

在C#中,字段初始化和构造函数初始化之间有什么区别,需要施加这种限制?

0