只是出于好奇:
我知道我可以告诉编译器我是否希望将某个值解释为某个数字类型,例如Integer(32位有符号),这样就可以将"I"(类型字符)附加到常量值:
Private Function GetTheAnswerAsInteger() As Integer Return 42I End Function
对于Short,还有"S",对于Decimal也有"D"等.
但是Byte的后缀是什么?提示:这不是明显的"B"......
没有一个.如果需要区分常量的整数和字节(例如调用适当的重载),则需要进行强制转换.
(顺便说一下,在C#中也是如此.)
MSDN提供确认:
字节没有文字类型字符或标识符类型字符.
还有一个类型字符和文字后缀列表.
因此,我们去年秋天在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版本中,这就是它的工作方式:
Public Const MyByte As Byte = 4UB; Public Const MyByte2 As SByte = 4SB;
这个答案实际上并没有提供后缀,但是它尽可能接近.
如果将扩展方法定义为
Imports System.Runtime.CompilerServices Module IntegerExtensions_ 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