Когда я определяю переменную, одновременно присваивая ей значение, я могу указать класс, наследником которого является результат выражения, могу указать интерфейс, который имплементируется результатом выражени или другой тип, к которому можно неявно привести этот результат. И в этом случае компилятор позволит мне не ошибиться с результатом выражения.
Так же я могу не указывать тип переменной, а предоставить эту возможность компилятору, воспользовавшись ключевым словом var.
var a = 5; // int
var b = 5.0; // double
Но когда я определяю константу - компилятор заставляет меня прописать тип константы в явном виде.
const int c = 5;
const double d = 5.0;
С чем связана такая непоследовательность? Неужели тип константы определить сложнее, чем тип переменной?
Ответ
Eric Lippert, ведущий разработчик компилятора C# отвечал на этот вопрос:
https://stackoverflow.com/a/2128581/1159507
Если вкратце то var предназначена для упрощения конструкция типа Dictionary
var от слова variable - переменная, В то же время ключевое слово const подчеркивает что что значение меняться не может, поэтому ограничение компилятора тот исключительно логическое, чтоб не было нонсенса типа const var
Комментариев нет:
Отправить комментарий