Выигрыш в памяти и производительности между использованием числовой константы и численного значения?

Чем отличается расход памяти и процессорного времени при использовании цифры 1 повсюду в коде от расхода при использовании на её местах константы, приведённой ниже?

public const byte ONE = 1;

Ответы (2 шт):

Автор решения: Uranus

Ничем. Понятие константа существует лишь на уровне языка. На уровне MSIL загрузка числа и загрузка константы - это одна и та же инструкция.

public class C {
    public const byte ONE = 1;
    public int M() {
        int result = 1;
        result += ONE;
        return result;
    }
}
IL_0000: ldc.i4.1
IL_0001: ldc.i4.1
IL_0002: add
→ Ссылка
Автор решения: Alexander Petrov

Небольшая разница между константой и литералом в данном случае всё же есть.

Литерал 1 будет иметь тип Int32. Константа имеет тип Byte.

Компилятор примет в расчёт типы при вызове перегрузок метода, если таковые имеются.

using var stream = new MemoryStream();
using var writer = new BinaryWriter(stream);
                
writer.Write(1); // перегрузка, принимающая int
writer.Write(Some.ONE); // перегрузка, принимающая byte

Console.WriteLine(stream.Length); // 5
→ Ссылка