看到帖子《Dim s1 As [String]和Dim s1 As String之间什么区别》的提问,专门做了测试,总结如下。
一、本来用方括号转义名称是为了类似下面这样的用法:
1)把关键字作为类型。
2)把关键字作为变量。
Module Module1 Private Enum [String] ASCII Unicode End Enum Dim s As [String] = [String].Unicode Dim [As] As Integer = 0 End Module@H_403_7@
二、当 As 后面出现类型关键字加方括号的转义,并且这个转义类型没有在前面定义过时:
A)标准的 CLR 类型会自动解释为原始的类型(当作方括号不存在)。
B)而 VB.Net 的特有类型会报错。根据《数据类型摘要 (Visual Basic)》,把基本类型都转义了一下,测试代码如下:
Module Module2 Dim a As [Char] Dim b1 As [DateTime],b2 As [Date] Dim c As [Decimal] Dim d As [Double] Dim e1 As [Int32],e2 As [Integer] Dim f1 As [Int64],f2 As [Long] Dim g As [Object] Dim h As [SByte] Dim g1 As [Int16],g2 As [Short] Dim i As [Single] Dim j As [String] Dim k1 As [UInt32],k2 As [UInteger] Dim l1 As [UInt64],l2 As [ULong] Dim m1 As [UInt16],m2 As [UShort] End Module@H_403_7@