Буквальный суффикс для байта в.NET?
Мне интересно, есть ли способ объявить байтовую переменную коротким способом, например, с плавающей запятой или с удвоением? Я имею в виду как 5f
а также 5d
, Конечно, я мог бы написать byte x = 5
, но это немного несущественно, если вы используете var
для локальных переменных.
4 ответа
Там нет упоминания буквального суффикса в справочнике MSDN для байта, а также в спецификации языка C# 4.0. Единственные литеральные суффиксы в C# предназначены для целых и действительных чисел следующим образом:
u = uint
l = long
ul = ulong
f = float
m = decimal
d = double
Если вы хотите использовать var
, вы всегда можете бросить байт, как в var y = (byte) 5
Хотя это и не связано, в C#7 появился новый двоичный префикс 0b
, в котором говорится, что число в двоичном формате. Тем не менее, нет суффикса, чтобы сделать его байтом, например:
var b = 0b1010_1011_1100_1101_1110_1111; //int
Итак, мы добавили двоичные литералы в VB прошлой осенью и получили аналогичные отзывы от ранних тестеров. Мы решили добавить суффикс для байта для VB. Мы остановились на SB (для подписанного байта) и UB (для неподписанного байта). Причина не только в том, что B и SB двойственны.
Во-первых, суффикс B является неоднозначным, если вы пишете в шестнадцатеричном формате (что означает 0xFFB?), И даже если у нас было решение для этого, или другой символ, чем "B" (считалось "Y", F# использует это), нет Можно было бы вспомнить, был ли подписан по умолчанию или без знака - байты.NET по умолчанию не подписаны, поэтому имеет смысл выбирать B и SB, но все остальные суффиксы подписываются по умолчанию, поэтому было бы совместимо с суффиксами других типов для выбора B и UB. В итоге мы пошли на однозначные SB и UB. - Энтони Д. Грин,
https://roslyn.codeplex.com/discussions/542111
По-видимому, кажется, что они сделали этот шаг в VB.NET (может быть, не выпущен прямо сейчас), и они могли бы реализовать его в roslyn для C# - иди отдать свой голос, если вы думаете, что это то, что вы хотели бы. У вас также будет возможность предложить возможный синтаксис.
Из этой страницы MSDN может показаться, что ваши единственные варианты - приведение явно (var x = (byte)5
) или прекратить использование var
...
Согласно MSDN вы можете объявить байт, используя десятичный, шестнадцатеричный или двоичный литерал.
// decimal literal
byte x = 5;
// hex decimal literal
byte x = 0xC5;
// binary literal
byte x = 0b0000_0101;