Литеральный суффикс для байта in.NET?
мне интересно, если есть способ, чтобы объявить переменную типа byte в короткий путь, как поплавки или удваивается? Я имею в виду 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# - 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;