Буквальный суффикс для байта в.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;
Другие вопросы по тегам