Как указать короткий литерал int без приведения?


есть ли способ указать, что моя переменная является коротким int? Я ищу что-то похожее на суффикс M для десятичных знаков. Для десятичных знаков я не должен говорить

var d = (decimal)1.23;

Я могу просто написать так:

var d = 1.23M;

есть ли способ написать это

   var s  = SomeLiteralWithoutCast

Так что s подразумевается как короткий int?

6 63

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;

два варианта; ни один из них не идеален:

  1. удалить var, явно указав тип:

    short s = 123;
    
  2. используйте синтаксис приведения (отмечая, что это операция времени компиляции, а не время выполнения):

    var s = (short)123;
    

Это единственные варианты для указания литерального короткого.

вы можете использовать следующие:

var value = (short)123;

конечно, это действительно не имеет смысла, так как весь смысл var-это не писать тип.

нет такой вещи Implicitly const поэтому вам нужно будет определить свою константу как короткую, как это:

const short x = 999;

посмотреть подробнее здесь