【发布时间】:2016-10-11 20:22:22
【问题描述】:
作为一名初级程序员,我试图了解 Visual Basic 中变量声明和赋值的概念。我正在考虑教程中的这段代码:
Imports System.Text
Module Module1
Sub Main()
Dim myString As StringBuilder = New StringBuilder
For i = 1 To 10
myString.Append("-")
myString.Append(i)
Next
Console.WriteLine(myString)
Console.ReadLine()
End Sub
End Module
我的困惑是由于这行:
Dim myString As StringBuilder = New StringBuilder
我认为正在发生的事情是我将变量 myString 声明为 StringBuilder 类的新对象实例(我希望我在这里正确使用了“对象”和“类”这两个词)。但是,为什么 myString 随后需要分配给 New StringBuilder 呢?我不是把它变成了一个带 Dim 的 StringBuilder 吗?而这个例子中 New 运算符的作用是什么?
非常感谢任何有助于我理解的解释。
【问题讨论】:
-
Dim stringBuilder as StringBuilder 声明了对 StringBuilder 实例的引用,该实例在您调用 New 之前不存在。 New 在内存中的某处创建实例,并将 reference 返回到该实例所在的内存区域。
-
PS 我在发布之前发现了这个讨论,但不幸的是它并没有具体解决我的问题。 stackoverflow.com/questions/467843/vb-net-dim-vs-new
-
该行做了两件事:
Dim声明代码将使用变量myString,该变量的类型为StringBuilder。New创建一个可以使用的StringBuilder实例。 -
可以缩短为 Dim myString As New StringBuilder
-
正如其他 cmets 所暗示的,变量不是对象!
myString是变量。当您编写Dim myString As StringBuilder时,您只创建了一个变量,而不是对象本身。 object 是通过调用构造函数(即 New)来创建的。
标签: vb.net variable-assignment declaration