это:
const int a = 5;
компилируется просто отлично, тогда как
const var a = 5;
не... while:
var a = 5;
компилируется так же хорошо, как это:
int a = 5;
почему?
это:
const int a = 5;
компилируется просто отлично, тогда как
const var a = 5;
не... while:
var a = 5;
компилируется так же хорошо, как это:
int a = 5;
почему?
Ключевое слово var
предназначалось для того, чтобы вы не могли писать длинные сложные имена типов, которые не могут быть константами.
Очень удобно записывать объявления типа
var dict = new Dictionary<string, List<Definition>>();
Это становится необходимым при использовании анонимных типов.
Для констант это не проблема.
Самое длинное встроенное имя типа с постоянными литералами decimal
; это не очень длинное имя.
Возможно иметь произвольно длинные имена enum
, которые могут использоваться как константы, но команда компилятора С#, по-видимому, не была заинтересована в этом.
Во-первых, если вы делаете постоянное значение enum
, вы можете также положить его в enum
.
Кроме того, имена enum
не должны быть слишком длинными. (В отличие от сложных типичных типов, которые могут и часто должны)
Это ограничение для компилятора, и причина этого ограничения дается eric lippert здесь
Константы без var:
const int Value1 = 1;
const int Value2 = 2;
Константы с var (значения свойств анонимного типа не могут быть изменены после создания):
var constants = new {
Value1 = 1,
Value2 = 2,
};
//use as constants.Value1
Так как константы должны быть встроенными числовыми типами или string
, вы на самом деле не много экономит; const int
имеет ту же длину, что и const var
, а int
- наиболее распространенный тип константы. Тогда там double
, который действительно не так долго. Если у вас их много, используйте функцию выбора Alt; -)