"Helló, Amigo! Ma Bilaabo a változók inicializálásának sorrendjéről fog beszélni ."

Képzeld el, hogy valami kódot nézel. Milyen értékeket kapnak a változók?

Kód
class Cat
{
 public int a = 5;
 public int b = a + 1;
 public int c = a * b;
}
Kód
class Cat
{
 public int a = getSum();
 public int b = getSum() - a;
 public int c = getSum() - a - b;

 public int getSum()
 {
  return a + b + c;
 }
}

– Ez tényleg megengedett?

"Természetesen. Az osztály tagmetódusainak és mezőinek deklarálási sorrendje nem fontos. "

Az osztály felülről lefelé töltődik be, ezért fontos, hogy egy mező csak más, már betöltött mezőket érjen el. A példában b hozzáférhet a -hoz , de nem tud semmit a c -ről .

– És mi lesz?

"Amikor a változókat létrehozzák, alapértelmezett értékeket kapnak."

Kód Mi történik valójában
class Cat
{
 public int a = 5;
 public int b = a + 1;
 public int c = a * b;
}
class Cat
{
 public int a = 0;
 public int b = 0;
 public int c = 0;

 public Cat()
 {
  super();

  a = 5;
  b = a + 1; //5+1 = 6
  c = a * b; //5*6 = 30
 }
}
class Cat
{
 public int a = getSum();
 public int b = getSum() - a;
 public int c = getSum() - a - b;

 public getSum()
 {
  return a + b + c;
 }
}
class Cat
{
 public int a = 0;
 public int b = 0;
 public int c = 0;

 public Cat()
 {
  super();

  a = getSum(); //(a+b+c)=0
  b = getSum() - a; //(a+b+c)-a=b=0
  c = getSum() - a - b; //(a+b+c)-a-b=c=0
 }

 public getSum()
 {
  return a + b + c;
 }
}

"Szent Moly! Olyan egyszerű. Köszönöm, Bilaabo. Igazi barát vagy!"

"Hurrá! Bilaabónak van egy barátja!"