Я читал через источники .NET, когда нашел это:
// Constructs a Decimal from an integer value.
//
public Decimal(int value) {
// JIT today can't inline methods that contains "starg" opcode.
// For more details, see DevDiv Bugs 81184: x86 JIT CQ:
// Removing the inline striction of "starg".
int value_copy = value;
if (value_copy >= 0) {
flags = 0;
}
else {
flags = SignMask;
value_copy = -value_copy;
}
lo = value_copy;
mid = 0;
hi = 0;
}
Как вы можете видеть, конструктор десятичной структуры копирует аргумент метода локальной переменной, а не использует ее напрямую. Мне было интересно, что означает комментарий и как оно относится к производительности и оптимизации?
Мое предположение заключается в том, что как только вы хотите изменить существующий аргумент, метод больше не может быть привязан?
http://referencesource.microsoft.com/#mscorlib/system/decimal.cs#f9a4da9d6e110054#references