Как указать короткий литерал 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;
посмотреть подробнее здесь