Как указать короткий литерал int без приведения?
есть ли способ указать, что моя переменная является коротким int? Я ищу что-то похожее на суффикс M для десятичных знаков. Для десятичных знаков я не должен говорить
var d = (decimal)1.23;
Я могу просто написать так:
var d = 1.23M;
есть ли способ написать это
var s = SomeLiteralWithoutCast
Так что s подразумевается как короткий int?
6 ответов:
короткий ответ, нет. В C# нет буквы
Sэто может быть использовано какvar a = 123Sэто будет означать, чтоaтипаshort. ЕстьLнаlong,Fнаfloat,Dнаdouble,Mнаdecimal,а неS. Было бы неплохо, если бы он был, но его нет.var a = 1M; // decimal var a = 1L; // long var a = 1F; // float var a = 1D; // double var a = 1; // int var a = 1U; // uint var a = 1UL; // ulongа не
var a = 1S; // not possible, you must use (short)1;
вопрос немного запутанный. Давайте определим некоторые термины:
A константное выражение это (грубо говоря) выражение, известное компилятору как определенное постоянное значение.
A литерал - это особый вид постоянного выражения;
123иMath.PIоба являются постоянными выражениями. Первое-буквальное, второе-нет.A постоянное поле является членом типа, который инициализируется с постоянным выражением, а затем может использоваться в качестве постоянного выражения в другом месте.
нет суффикса для
shortтип данных в C#. Если вы хотите, чтобы целочисленный литерал был коротким, вам нужно явно указать тип и предоставить литерал, который находится в диапазоне.short s = 123;
два варианта; ни один из них не идеален:
удалить
var, явно указав тип:short s = 123;используйте синтаксис приведения (отмечая, что это операция времени компиляции, а не время выполнения):
var s = (short)123;Это единственные варианты для указания литерального короткого.
вы можете использовать следующие:
var value = (short)123;конечно, это действительно не имеет смысла, так как весь смысл var-это не писать тип.
нет такой вещи
Implicitly constпоэтому вам нужно будет определить свою константу как короткую, как это:const short x = 999;посмотреть подробнее здесь