VB.NET中“Byte”数字常量的后缀(类型字符)是什么?

时间:2008-10-31 07:39:51

标签: vb.net types constants

出于好奇:

我知道我可以告诉编译器我是否希望将某个值解释为某种数字类型,例如作为整数(32位有符号),这样就将“I”(类型字符)附加到常量值:

Private Function GetTheAnswerAsInteger() As Integer

   Return 42I

End Function

短片也是“S”,十进制也是“D”等。

但是Byte 的后缀是什么?提示:这不是明显的“B”......

4 个答案:

答案 0 :(得分:31)

没有一个。如果需要区分常量的整数和字节(例如调用适当的重载),则需要进行强制转换。

(顺便说一下,在C#中也是如此。)

MSDN provides confirmation:

  

字节没有文字字符或   标识符类型字符。

还有list of type characters and literal suffixes

答案 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中没有字节文字。