Mat*_*ias 153 .net c# value-type
我想知道是否有任何方法可以像浮点数或双打一样以短的方式声明一个字节变量?我的意思是喜欢5f
和5d
.当然我可以写byte x = 5
,但如果你使用var
局部变量,这有点无关紧要.
Mat*_*att 138
在字节的MSDN引用以及C#4.0语言规范中没有提到文字后缀.C#中唯一的文字后缀是整数和实数,如下所示:
u = uint
l = long
ul = ulong
f = float
m = decimal
d = double
Run Code Online (Sandbox Code Playgroud)
如果要使用var
,可以始终将字节转换为var y = (byte) 5
虽然没有真正相关,但在C#7中,引入了一个新的二进制前缀0b
,该前缀表示该数字是二进制格式.尽管如此,仍然没有后缀使它成为一个字节,例如:
var b = 0b1010_1011_1100_1101_1110_1111; //int
Run Code Online (Sandbox Code Playgroud)
Ert*_*maa 27
因此,我们去年秋天在VB中添加了二进制文字,并得到了早期测试人员的类似反馈.我们决定为VB添加字节后缀.我们选择了SB(用于有符号字节)和UB(用于无符号字节).它不仅仅是B和SB的原因是双重的.
一,B后缀是不明确的,如果你用十六进制写(0xFFB是什么意思?),即使我们有一个解决方案,或者另一个字符而不是'B'(考虑'Y',F#使用它)no我们可以记住默认值是有符号还是无符号 - 默认情况下.NET字节是无符号的,因此选择B和SB是有意义的,但是所有其他后缀都是默认签名的,因此它与其他类型的后缀一致,以便选择B和UB.最后,我们选择了明确的SB和UB. - Anthony D. Green,
https://roslyn.codeplex.com/discussions/542111
显然,似乎他们已经在VB.NET中完成了这一步骤(可能现在不会发布),他们可能会在Roslyn中为C#实现它 - 如果你认为这是你想要的东西,那就去投票吧.您还有机会提出可能的语法.
Dan*_*zey 10
从这个 MSDN页面,似乎你唯一的选择是显式转换(var x = (byte)5
),或停止使用var
...
根据MSDN,您可以使用十进制、十六进制或二进制文字声明一个字节。
// decimal literal
byte x = 5;
// hex decimal literal
byte x = 0xC5;
// binary literal
byte x = 0b0000_0101;
Run Code Online (Sandbox Code Playgroud)