在.NET中字节的后缀?
我想知道是否有任何方式来宣布一个像浮点数或双打短的方式的字节variables? 我的意思是像5f
和5d
。 当然,我可以写byte x = 5
,但是如果你使用var
作为局部variables,那有点不重要。
没有提及字节的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
,它表示数字是二进制格式。 尽pipe如此,仍然没有后缀使它成为一个字节,例如:
var b = 0b1010_1011_1100_1101_1110_1111; //int
所以,我们去年秋天在VB中添加了二进制文字,并得到了早期testing人员的类似反馈。 我们决定为VB添加一个字节后缀。 我们在SB(对于有符号字节)和UB(对于无符号字节)进行了解决。 这不仅仅是B和SB的原因是双重的。
一,如果你用hex编写(0xFFB是什么意思?),B后缀是不明确的,即使我们有解决scheme,或者是'B'以外的其他字符('Y'被认为是F#使用它)人们可以记住默认是有符号的还是无符号的 – 默认情况下,.NET字节是无符号的,所以selectB和SB是有意义的,但是所有其他的后缀都是默认签名的,所以与其他types的后缀一致,selectB和UB。 最后我们去了毫不含糊的SB和UB。 – 安东尼D.绿色,
https://roslyn.codeplex.com/discussions/542111
显然,他们似乎已经在VB.NET中做了这个动作(现在可能不会发布),并且他们可能会在C#中的roslyn中实现它 – 如果您认为这是您想要的,请投票。 你也有机会提出一个可能的语法。
从这个 MSDN页面看来,你唯一的select是显式转换( var x = (byte)5
),或者停止使用var
…
按照MSDN你可以使用十进制,hex或二进制文字声明一个字节。
// decimal literal byte x = 5; // hex decimal literal byte x = 0xC5; // byte literal byte x = 0b0000_0101;