出于好奇:
我知道我可以告诉编译器我是否希望将某个值解释为某种数字类型,例如作为整数(32位有符号),这样就将“I”(类型字符)附加到常量值:
Private Function GetTheAnswerAsInteger() As Integer
Return 42I
End Function
短片也是“S”,十进制也是“D”等。
但是Byte 的后缀是什么?提示:这不是明显的“B”......
答案 0 :(得分:31)
没有一个。如果需要区分常量的整数和字节(例如调用适当的重载),则需要进行强制转换。
(顺便说一下,在C#中也是如此。)
字节没有文字字符或 标识符类型字符。
答案 1 :(得分:6)
因此,我们去年秋天在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版本中,这就是它的工作方式:
Public Const MyByte As Byte = 4UB;
Public Const MyByte2 As SByte = 4SB;
答案 2 :(得分:5)
这个答案实际上并没有提供后缀,但它与它的结合非常接近。
如果您将扩展方法定义为
Imports System.Runtime.CompilerServices
Module IntegerExtensions
<Extension()> _
Public Function B(ByVal iNumber As Integer) As Byte
Return Convert.ToByte(iNumber)
End Function
End Module
你可以像这样使用它:
Private Function GetTheAnswerAsByte() As Byte
Return 42.B
End Function
答案 3 :(得分:3)
.NET中没有字节文字。