Литеральный формат c# short/long/int?
в C / c# / etc. вы можете сказать компилятору, что литеральное число не то, что кажется (т. е., float вместо double, unsigned long вместо int:
var d = 1.0; // double
var f = 1.0f; // float
var u = 1UL; // unsigned long
etc.
может кто-нибудь точка меня в список? Я специально ищу суффикс для short или Int16.
5 ответов
var d = 1.0d; // double
var d0 = 1.0; // double
var d1 = 1e+3; // double
var d2 = 1e-3; // double
var f = 1.0f; // float
var m = 1.0m; // decimal
var i = 1; // int
var ui = 1U; // uint
var ul = 1UL; // ulong
var l = 1L; // long
думаю, это все... нет литеральных спецификаторов для short/ushort/byte / sbyte
с §2.4.4.2 целочисленные литералы:
тип целочисленного литерала определяется следующим образом:
- если литерал не имеет суффикса, то есть первый из этих типов, в которых его значение может быть представлено:
int,uint,long,ulong.- если литерал имеет суффикс
Uилиu, он имеет первый из этих типов, в котором его значение может быть представлено:uint,ulong.- если литерал имеет суффикс
Lилиl, он имеет первый из этих типов, в котором его значение может быть представлено:long,ulong.- если литерал имеет суффикс
UL,Ul,uL,ul,LU,Lu,lUилиlu, это типаulong.
если суффикс реального типа не указан, тип реального литерал двойной. В противном случае суффикс реального типа определяет тип реального литерала следующим образом:
- настоящий буквальный суффикс
Fилиfтипаfloat. Например, литералы1f,1.5f,1e10fи123.456Fвсе типаfloat.- настоящий буквальный суффикс
Dилиdтипаdouble. Например, литералы1d,1.5d,1e10dи123.456Dвсе типdouble.- настоящий буквальный суффикс
Mилиmтипаdecimal. Например, литералы1m,1.5m,1e10mи123.456Mвсе типаdecimal. Этот литерал преобразуется в десятичное значение, принимая точное значение и, при необходимости, округляя до ближайшего представимого значения с помощью округления банкира (раздел 4.1.7). Любая шкала, видимая в литерале, сохраняется, если значение не округлено или равно нулю (в последнем случае знак и данные будет 0). Следовательно, буквальное2.900mбудет проанализирован, чтобы сформировать десятичный знак со знаком0, коэффициент2900, и масштаб3.
Если вы хотите избежать приведений типов, которые часто вызывают предупреждения с resharper,short.Parse("1") также может быть альтернативой.