Буквальный суффикс для байта в .NET? - PullRequest
149 голосов
/ 21 марта 2011

Мне интересно, есть ли способ объявить байтовую переменную коротким способом, например, с плавающей запятой или с двойными числами?Я имею в виду, как 5f и 5d.Конечно, я мог бы написать byte x = 5, но это немного несущественно, если вы используете var для локальных переменных.

Ответы [ 4 ]

133 голосов
/ 21 марта 2011

Нет никакого упоминания о буквенном суффиксе в справочнике 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
25 голосов
/ 04 января 2015

Итак, мы добавили двоичные литералы в 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 # - иди отдать свой голос, если вы думаете, что это то, что вы хотели бы лайк. У вас также будет возможность предложить возможный синтаксис.

10 голосов
/ 21 марта 2011

С этой страницы MSDN может показаться, что ваши единственные варианты - явное приведение (var x = (byte)5) или прекращение использования var ...

3 голосов
/ 10 мая 2017

Согласно MSDN вы можете объявить байт, используя десятичный, шестнадцатеричный или двоичный литерал.

// decimal literal
byte x = 5;

// hex decimal literal
byte x = 0xC5;

// binary literal
byte x = 0b0000_0101;
...