【问题标题】:What's the suffix (type character) for "Byte" numeric constants in VB.NET?VB.NET 中“字节”数字常量的后缀(类型字符)是什么?
【发布时间】:2008-10-31 07:39:51
【问题描述】:

只是出于好奇:

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

Private Function GetTheAnswerAsInteger() As Integer

   Return 42I

End Function

还有“S”表示短,“D”表示十进制等。

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

【问题讨论】:

    标签: vb.net types constants


    【解决方案1】:

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

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

    MSDN provides confirmation:

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

    还有一个list of type characters and literal suffixes

    【讨论】:

    • 小可怜的字节,甚至没有文字类型字符... ;-)
    • 对于 C# 人来说,规范的这一部分展示了各种选项。 msdn.microsoft.com/en-us/library/aa664674%28VS.71%29.aspx
    • @JonSkeet - 注意到其他关于 2015 年 SBUB 的 Roslyn 的回复,为什么我仍然不能在我的 VB(VS 2017)中使用这些?我需要调整一些设置吗?
    【解决方案2】:

    所以,我们去年秋天在 VB 中添加了二进制文字并得到了类似的反馈 来自早期测试人员。我们确实决定为 VB 添加一个字节后缀。我们 选择 SB(用于有符号字节)和 UB(用于无符号字节)。原因 不只是 B 和 SB 是双重的。

    第一,如果你用十六进制写,B 后缀是不明确的(什么 0xFFB 是什么意思?),即使我们有解决方案,或者其他 字符比'B'('Y'被考虑,F#使用这个)没人能 记住默认值是有符号还是无符号 - .NET 字节是 默认情况下未签名,因此选择 B 和 SB 是有意义的,但所有 其他后缀是默认签名的,所以它是一致的 使用其他类型后缀来选择 B 和 UB。最后我们去了 明确的 SB 和 UB。 -- 安东尼 D. 格林,

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

    它已集成到即将发布的 VB.NET 中,这就是它的工作方式:

    Public Const MyByte As Byte = 4UB;
    Public Const MyByte2 As SByte = 4SB;
    

    【讨论】:

      【解决方案3】:

      这个答案并没有真正提供后缀,但它已经尽可能接近了。

      如果你定义一个扩展方法为

      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
      

      【讨论】:

      • +1。虽然这可能在常量部分不起作用。
      【解决方案4】:

      .NET 中没有字节文字。

      【讨论】:

        猜你喜欢
        • 2011-04-15
        • 2018-12-18
        • 1970-01-01
        • 2012-08-30
        • 2012-09-13
        • 1970-01-01
        • 2011-07-19
        • 1970-01-01
        • 2010-10-19
        相关资源
        最近更新 更多