字符串变量中“”和Nothing之间有什么区别?

时间:2014-05-23 08:21:16

标签: vb.net

我一直在使用Nothing将变量初始化为空,但我发现我们也可以使用“”,所以我更改了所有初始变量以使我的代码更短更整洁。

但它有相同的输出?_?

2 个答案:

答案 0 :(得分:5)

  

变量“和”之间有什么区别?

不同之处在于,如果将变量初始化为"",则其值为空字符串。如果将其初始化为Nothing,则其值为Nothing(空对象引用)。​​

您应该使用适当的值初始化变量,以便您使用它们。有时候会Nothing,其他时间"",其他时间0,其他时间42。这完全取决于变量的用途。

答案 1 :(得分:5)

我假设你在这种情况下是指字符串变量。假设你有

Dim myString As String = Nothing

你有什么?你有一个名为myString的声明变量,但它实际上没有任何价值 - 它只不过是可以去的地方的占位符。如果此时尝试使用它,您将获得一个空引用异常,因为它是这样的:一个空引用。现在让我们假设你有这个:

Dim myString As String = ""    'Or indeed String.Empty

你现在拥有的是一个定义的变量,实际上有一个值。空字符串可能意义不大但它是一个实际值,因此如果您尝试使用它,则不会再获得空引用异常,因为它不是空引用:它是对有效值<的引用/强>

我个人的偏好是始终确保在声明时正确初始化引用类型的变量。使用Nothing并不是以任何方式进行初始化 - 默认情况下它们都是Nothing,因此您不会更改任何内容。对字符串变量使用""String.Empty(它们在功能上是等效的),尤其是因为如果在变量设置之前使用变量,那么toherwise VS会警告您将获得空引用异常(如果你有Option Strict,你应该选择IMO。