Учитывая следующий код:
public class Progressor
{
private IProgress<int> progress = new Progress<int>(OnProgress);
private void OnProgress(int value)
{
//whatever
}
}
Это дает следующую ошибку при компиляции:
Инициализатор поля не может ссылаться на нестатическое поле, метод или свойство "Progressor.OnProgress(int)"
Я понимаю ограничение, на которое он жалуется, но я не понимаю, почему это проблема, но вместо этого поле может быть инициализировано в конструкторе следующим образом:
public class Progressor
{
private IProgress<int> progress;
public Progressor()
{
progress = new Progress<int>(OnProgress);
}
private void OnProgress(int value)
{
//whatever
}
}
В чем разница в С# относительно инициализации поля и инициализации конструктора, которая требует этого ограничения?