考虑以下代码:
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#有什么区别?