Страницы

Поиск по вопросам

понедельник, 13 мая 2019 г.

Почему C# может определить тип переменной, но не может определить тип константы?

Когда я определяю переменную, одновременно присваивая ей значение, я могу указать класс, наследником которого является результат выражения, могу указать интерфейс, который имплементируется результатом выражени или другой тип, к которому можно неявно привести этот результат. И в этом случае компилятор позволит мне не ошибиться с результатом выражения.
Так же я могу не указывать тип переменной, а предоставить эту возможность компилятору, воспользовавшись ключевым словом 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> priceTable = new Dictionary>();
var от слова variable - переменная, В то же время ключевое слово const подчеркивает что что значение меняться не может, поэтому ограничение компилятора тот исключительно логическое, чтоб не было нонсенса типа const var

Комментариев нет:

Отправить комментарий