CodeGym /Corsi /All lectures for IT purposes /Ordine di inizializzazione variabile

Ordine di inizializzazione variabile

All lectures for IT purposes
Livello 1, Lezione 136
Disponibile

"Ciao, Amigo! Oggi Bilaabo parlerà dell'ordine in cui vengono inizializzate le variabili ."

Immagina di guardare un codice. Quali valori assumono le variabili?

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

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

"È davvero permesso?"

"Naturalmente. L'ordine in cui vengono dichiarati i metodi e i campi dei membri di una classe non è importante. "

Una classe viene caricata dall'alto verso il basso, quindi è importante che un campo acceda solo ad altri campi che sono già stati caricati. Nell'esempio, b può accedere a a , ma non sa nulla di c .

"E cosa succederà?"

"Quando le variabili vengono create, ottengono valori predefiniti."

Codice Cosa succede davvero
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;
 }
}

"Santo cielo! È così semplice. Grazie, Bilaabo. Sei un vero amico!"

"Evviva! Bilaabo ha un amico!"

Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION