我一直在使用Nothing将变量初始化为空,但我发现我们也可以使用“”,所以我更改了所有初始变量以使我的代码更短更整洁。
但它有相同的输出?_?
答案 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。