在VB.Net中,String与[String]有何区别?

5

我想知道这样声明变量的区别是什么...

Dim something as String = Nothing

并且

Dim something as [String] = String.Empty

具体来说,String和[String]之间的区别是什么?

http://msdn.microsoft.com/en-us/library/ksh7h19t(v=vs.90).aspx - Steve
在标题中使用VBA,VB.NET标签?不要使用第二个;这就像给你的孩子取名为“孩子”一样。 - Ňɏssa Pøngjǣrdenlarp
Plutonix - 不好意思,那是键盘打错了。 - Gil
1
一定要使用VB.NET,而不是VBA,因为VBA没有String.Empty。 - Joel Coehoorn
此外,这些代码示例中最大的区别在于String.Empty与Nothing完全不同。Nothing是一个空引用。String.Empty是一个长度为0的非空字符串的引用。 - Joel Coehoorn
@JoelCoehoorn Nothing 不是一个空引用,而是一种类型的默认值。对于引用类型,Nothing 等同于 null。但是 Dim myint As Int32 = Nothing 将把值设置为 0。来自 MSDN:Nothing - Fabio
1个回答

5
除了第一个是Nothing,第二个是空的string之外,它们没有区别。
在VB.NET中,您可以使用方括号([...])来告诉编译器忽略一个标识符,这经常用于关键字
通常用于Enum
Dim colors = [Enum].GetValues(GetType(Colors))

由于Enum是一个关键字和一种类型,如果没有方括号,它将无法编译。

MSDN:

常规标识符可能与关键字不匹配,但转义标识符可以。 转义标识符是由方括号括起来的标识符。


Tim,为什么 Dim x As [String] 能够工作,而 Dim y As [Integer] 却不能? - rory.ap
1
@roryap:尝试使用Dim y As [Int32]。我猜测如果你提供带括号的Integer,编译器就找不到System.Int32Integer只是System.Int32的别名。 - Tim Schmelter
好的,那很有道理。我只是无法理解为什么他们在我正在修订的一些代码中以两种方式声明东西。 - Gil
所以问题在于它不能用于类型别名,只能用于类型。 - rory.ap

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