Почему С# разрешит это:
public class MyClass
{
static int A=1;
static int B=A+1;
}
Но не позволит ( "Инициализатор поля не может ссылаться на нестатические поля, метод или свойство" ) this
public class MyClass
{
int A=1;
int B=A+1;
}
Я думал, что он гарантирован (со статическими полями), который будет последовательно инициализирован, как он появляется, но он также применяется здесь, как вы можете видеть:
public class MyClass
{
int A=((Func<int>)(delegate(){ Console.WriteLine ("A"); return 1;}))();
int B=((Func<int>)(delegate(){ Console.WriteLine ("B"); return 2;}))();
int C=((Func<int>)(delegate(){ Console.WriteLine ("C"); return 3;}))();
}
void Main()
{
var a = new MyClass();
}
Результат:
A
B
C
Вопрос
Меня больше интересует причина/логика, почему он был ограничен. просто для любопытства.
nb не нашел дубликата.