Dim s As String 和 Dim s As [String] 之间有什么区别?

3

什么是以下两者之间的区别:

Dim s As String

并且

Dim s As [String]

2
好的,我必须说一下...请不要将变量命名为[If]、[As]、[Dim]等!仅仅因为你可以这样做,并不意味着你应该这样做。我并不是说你会这么做,但我认为这需要被写在某个地方。 - Matt Dawdy
@Matt:没有理智的人会把一个变量命名为[If][New] 更有可能。 - SLaks
1
新的。唉。这就像在C#中一样。我个人认为大小写敏感是一件非常糟糕的事情。我告诉所有初级开发人员,如果他们曾经命名一个变量objectId,并且有另一个变量名为objectID,并且意思不同,那么我将切断他们的互联网访问权限。 - Matt Dawdy
1
顺便提一下,在C#中,你可以(但不应该)写object @if; - SLaks
1
@Matt - 这种语言特性使得自动化代码生成变得更加容易。我同意在自己的代码中没有人应该需要这样做。 - Michael Petrotta
+1 给 @Michael Petrotta,它确实有助于代码生成。[Class] 是我通常遇到的一个,因为某人在数据库中创建了一个以该名称命名的列,因为它是最有意义的,现在我们被卡住了。 - Chris Haas
4个回答

5

没有区别。

在VB中,您可以使用括号将标识符包装起来,以强制将其解析为标识符而不是关键字。

例如,您可以写:

Dim [If], [As], [Dim]

没有任何语法错误。

方括号除了表示标识符不是关键字之外,没有任何作用,因此someVar[someVar]是相同的。


2

它们是完全相同的。当您在类型名称周围放置方括号时,它不会有任何不同,但当方括号放置在标识符周围时,它允许您使用保留关键字。

因此,这是合法的:

Dim [String] as String

因为标识符名称周围的括号使编译器知道您打算使用保留关键字。

2

代码中发布的内容没有功能上的区别。

您可以使用方括号声明与VB.NET关键字相同名称的变量。例如,如果有一个名为“Loop”的变量(在VB中是保留关键字):

Loop.Visible   = True  ' 会导致错误。
[Loop].Visible = True  ' 设置名为“Loop”的变量的Visible属性。

此示例来自MSDN页面


2

从技术上讲,没有区别。Dim s As StringDim s As [String]相同。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接