У меня проблема с пониманием порядка, в котором происходит инициализация. это тот порядок, который я предполагал:
*Once per
1. Static variable declaration
2. Static block
*Once per object
3. variable declaration
4. initialization block
5. constructor
но в соответствии с этим кодом я, очевидно, ошибаюсь:
class SomethingWrongWithMe
{
{
b=0; //no. no error here.
int a = b; //Error: Cannot reference a field before it is defined.
}
int b = 0;
}
И ошибка исчезнет, если я это сделаю:
class SomethingWrongWithMe
{
int b = 0;
{
b=0;
int a = b; //The error is gone.
}
}
Я не могу понять, почему на
b=0;