Вопрос немного сбивает с толку.Давайте определим некоторые термины:
A константное выражение - это (грубо говоря) выражение, известное компилятору как конкретное значение константы.
A literal - это особый вид константного выражения;123
и Math.PI
являются константными выражениями.Первый является литералом, а последний - нет.
A константное поле является членом типа, который инициализируется с помощью константного выражения, а затем может использоваться в качестве константного выражения в другом месте.,Math.PI
является примером постоянного поля.
A локальная постоянная подобна постоянному полю, но ограничена блоком.(Так же, как локальная переменная находится в блоке.)
Поля констант и локальные константы необходимы для явного определения их типа;не существует формы "var" для констант.(Сама идея заставляет вздрогнуть; «const var», очевидно, является оксюмороном.)
Локальные переменные не обязаны указывать их тип;тип может быть выведен из инициализатора.Такая локальная переменная называется «неявно типизированная локальная переменная».
Итак, ваш вопрос «есть ли способ написать выражение литеральной константы типа short, которое можно использовать для инициализации неявно типизированной локальной переменнойтипа коротко? "
нет, нет.Вы можете явно ввести локальную переменную:
short s1 = 123;
Вы можете явно ввести локальную константу:
const short s2 = 123;
Или вы можете сделать выражение константы, которое содержит приведение к короткому:
var s3 = (short)123;
Или вы можете сделать локальную или полевую константу и использовать ее имя для инициализатора неявно типизированного локального:
var s4 = s2;
Но нет никакого способа обойти это;short
должен появиться где-то , либо в поле, либо в локальной декларации, либо в приведении.