Мое мнение о том, что они существуют, чтобы помочь избежать магических чисел.
Магические числа в основном в любом месте вашего кода, где у вас есть число aribtrary. Например:
int i = 32;
Это проблематично в том смысле, что никто не может сказать , почему i устанавливается в 32, или что означает 32, или если это вообще должно быть 32. Это волшебно и таинственно.
В том же духе, я часто вижу код, который делает это
int i = 0;
int z = -1;
Почему они установлены на 0 и -1? Это просто совпадение? Они что-то значат? Кто знает?
Хотя Decimal.One
, Decimal.Zero
и т. Д. Не говорят вам, что значения означают в контексте вашего приложения (может быть, ноль означает «отсутствует» и т. Д.), Он действительно говорит вам, что значение было преднамеренно установлено и, вероятно, имеет некоторый смысл.
Хотя и не идеально, это гораздо лучше, чем вообще ничего вам не говорить: -)
Примечание
Это не для оптимизации. Соблюдайте этот код C #:
public static Decimal d = 0M;
public static Decimal dZero = Decimal.Zero;
При просмотре сгенерированного байт-кода с помощью ildasm обе опции приводят к идентичным MSIL. System.Decimal
является типом значения, поэтому Decimal.Zero
не более «оптимален», чем просто использование литерального значения.