Per ridurre la signatura delle variabili locali, IL permette di specificarle in degli slot indicizzati: [0], [1], etc. così da poter condividere uno slot con più variabili locali dello stesso tipo. Per esempio, a questo metodo Main:
static void Main()
{
int i = 1;
}
corrisponde questo codice IL in seguito a una compilazione con /debug+
.method private hidebysig static void Main() cil managed
{
.entrypoint
.maxstack 1
.locals init ([0] int32 i)
ldc.i4.1
stloc.0
ret
}
in cui si nota lo slot [0] per la variabile i. Però, se si compila con /debug-, lo slot sparisce:
.method private hidebysig static void Main() cil managed
{
.entrypoint
.maxstack 1
.locals init (int32 V_0)
ldc.i4.1
stloc.0
ret
}
Strano, mi aspettavo a un comportamento al contrario.