25

只是出于好奇:

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

Private Function GetTheAnswerAsInteger() As Integer

   Return 42I

End Function

还有“S”表示短,“D”表示小数等。

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

4

4 回答 4

31

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

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

MSDN 提供确认:

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

还有一个类型字符和文字后缀的列表

于 2008-10-31T07:50:15.070 回答
6

因此,我们去年秋天在 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;
于 2015-01-04T00:11:24.517 回答
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
于 2013-12-20T19:08:49.000 回答
3

.NET 中没有字节文字。

于 2008-10-31T07:47:35.760 回答