Decompile code:
C#public void Bar(int argument) {
if(argument < 0)
throw new ArgumentException("Blah", "argument");
double cathetus1 = 3;
double cathetus2 = 4;
double hypotenuse = Sqrt(cathetus1 * cathetus1 + cathetus2 * cathetus2);
}
decompiled code is:
C#public void Bar(int argument)
{
bool cathetus1;
cathetus1 = argument < 0;
if (cathetus1)
{
throw new ArgumentException("Blah", "argument");
}
double cathetus2;
cathetus2 = 3D;
double hypotenuse;
hypotenuse = 4D;
double sqrt;
sqrt = Math.Sqrt(cathetus2 * cathetus2 + hypotenuse * hypotenuse);
}
You can see inserted temporal local took name from the pdb file
Another example - exception variable also steals local name:
C#public void Bar(int argument) {
int first = 11;
try {
throw new Exception("aa");
} catch(Exception ex) when (ex.Message.Contains("a")) {
}
int second = 22;
}
Decompiled version:
C#public void Bar(int argument)
{
int first;
first = 11;
try
{
throw new Exception("aa");
}
catch (Exception second) when (second.Message.Contains("a"))
{
}
int intNum;
intNum = 22;
}