.NET中字节的文字后缀?

时间:2011-03-21 13:12:36

标签: c# .net value-type

我想知道是否有任何方法可以像浮点数或双打一样以简短的方式声明字节变量?我的意思是5f5d。当然我可以写byte x = 5,但如果你对局部变量使用var,这有点无关紧要。

4 个答案:

答案 0 :(得分:131)

MSDN reference for Byte以及C# 4.0 Language Specification中没有提及文字后缀。 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

答案 1 :(得分:25)

  

因此,我们去年秋天在VB中添加了二进制文字并获得了类似的反馈   来自早期测试人员。我们决定为VB添加字节后缀。我们   在SB(用于有符号字节)和UB(用于无符号字节)上建立。原因   它不仅仅是B和SB的两倍。

     

一,如果你用十六进制写的话,B后缀是不明确的(什么   0xFFB是什么意思?)即使我们有一个解决方案,或另一个   字符比'B'(考虑'Y',F#使用这个)没有人可以   记住默认值是有符号还是无符号 - .NET字节是   默认情况下是无符号的,所以选择B和SB是有意义的   默认情况下会对其他后缀进行签名,以使其保持一致   使用其他类型的后缀来选择B和UB。最后我们去了   明确的SB和UB。    - Anthony D. Green,

https://roslyn.codeplex.com/discussions/542111

显然,他们似乎已经在VB.NET中完成了这一步骤(可能现在不会发布),他们可能会在Roslyn中为C#实现它 - 如果你认为那是你的话就去投票吧喜欢。您还有机会提出可能的语法。

答案 2 :(得分:10)

this MSDN页面看,您的唯一选择似乎是明确投放(var x = (byte)5),或停止使用var ......

答案 3 :(得分:3)

根据MSDN,您可以使用十进制,十六进制或二进制文字声明一个字节。

// decimal literal
byte x = 5;

// hex decimal literal
byte x = 0xC5;

// binary literal
byte x = 0b0000_0101;