Ho il seguente programma per aggiungere i valori. Quando eseguo la chiamata di Aggiungi metodo nel metodo principale e analizzo ILDASM.EXE La dimensione di Maxstack è 2. E dopo la decommentazione, la dimensione maxstack diventa 4.Calcolo del valore di maxstack nel codice IL
Perché nel caso del metodo Main tutte le variabili non vanno nello stack come stack la dimensione rimane solo 2, mentre in caso di chiamata di metodo Aggiungi ogni variabile entra nello stack? È questo il caso in cui il calcolo del metodo principale sta avvenendo uno alla volta in modo tale da richiedere solo due variabili alla volta.
Si prega di cancellare la mia confusione.
static void Main(string[] args)
{
int x = 2;
int y = 3;
int a = 4;
int b = 5;
int c = 6;
Console.WriteLine(x + y + a + b + c);
Console.WriteLine(Add(10, 20, 30, 40));
Console.ReadLine();
}
static int Add(int x, int y, int z, int a)
{
return x + y + z + a;
}
mi piacerebbe un po 'modificare il fraseggio in alto - non è la * dichiarazione * che utilizza lo spazio di stack, è l'* inizializzazione *. –
@Damien_The_Unbeliever Grazie per la revisione e la correzione. Risolvendolo. –
Quindi è come se IL non fosse generato linea per linea. Voglio dire è come x = 2 prende uno stack spack allora perché non un'altra dichiarazione di valore? E 'come se il compilatore arrivasse a sapere che richiede solo l'aggiunta, quindi saranno 2 gli spazi nello stack. – TBAG