Литеральный суффикс для байта in.NET?


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

4 135

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

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

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

// decimal literal
byte x = 5;

// hex decimal literal
byte x = 0xC5;

// binary literal
byte x = 0b0000_0101;