变量声明和赋值
Variable declaration and assignment
作为一名初级程序员,我试图理解 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 class 的新对象实例(我希望我在这里正确使用了“对象”和 'class' 这两个词) .但是,为什么 myString 随后需要分配给 New StringBuilder?我不是只是用 Dim 把它变成了 StringBuilder 吗? New 运算符在此示例中的作用是什么?
非常感谢任何有助于我理解的解释。
事情是这样的,你做了一个快捷方式:
Dim myString As StringBuilder
myString = new StringBuilder()
所以不需要再赋值一个新的StringBuilder,因为你已经赋值过了。
现在 Console.WriteLine 应该是 myString.ToString()
,就像
Console.WriteLine (myString.ToString())
这会将 StringBuilder 对象转换为字符串。
字符串生成器是 class。
当您执行 Dim myString as StringBuilder
时,您正在创建一个变量,即内存 space,它将指向 StringBuilder
的实例在内存中的位置。
每当你 Dim
某物时,它的值将是那个 class 的默认值。对于大多数 classes,默认值为 null,尽管整数和布尔值等值类型具有其他默认值(整数为 0,布尔值为 false)
当您执行 = New StringBuilder
时,您正在实例化 StringBuilder class 的对象,现在您的变量 myString 指向内存中的那个位置。
如果省略此步骤,myString.Append("-")
将抛出 NullPointerException,因为 myString 为 null。
Dim myString As StringBuilder = New StringBuilder
是一种简单的方法:
Dim myString As StringBuilder
myString = New StringBuilder
行
Dim myString as StringBuilder
声明一个变量,该变量旨在引用 StringBuilder 实例。在您调用 New 之前,该实例不存在。 New 在内存中的某处创建实例,并 returns 对实例所在内存区域的引用。
让我们试着检查一下这条线。
当你写
Dim myString as StringBuilder = New StringBuilder
(你也可以使用Dim myString = new StringBuilder(),编译器可以从上下文中识别变量的类型)
您将两条指令放在一行中
Dim myString As StringBuilder
myString = New StringBuilder
在第一行中,您声明了一个要引用 StringBuilder 实例的变量,但是此时,该变量(将其视为内存中的 4 个字节的区域)不包含任何内容。该变量的值尚未分配给任何东西,您可以用
来证明它
Dim myString As StringBuilder
Dim b As Boolean = False
b = myString Is Nothing
Console.WriteLine(b) ' => outputs True
现在,您调用 New StringBuilder 运算符搜索内存区域,其中有足够 space 存储属于 StringBuilder 的所有内部字段例如,在创建这个区域之后,New 运算符调用 StringBuilder 的无参数构造函数 class(应该将内部字段初始化为所需的任何值)和 RETURNS 指向该区域的值为 StringBuilder 实例分配的内存。正是这个值(对...的引用)将分配给您的 myString 变量,现在不再是 Nothing
myString = New StringBuilder()
b = myString Is Nothing
Console.WriteLine(b) ' => outputs False
作为一名初级程序员,我试图理解 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 class 的新对象实例(我希望我在这里正确使用了“对象”和 'class' 这两个词) .但是,为什么 myString 随后需要分配给 New StringBuilder?我不是只是用 Dim 把它变成了 StringBuilder 吗? New 运算符在此示例中的作用是什么?
非常感谢任何有助于我理解的解释。
事情是这样的,你做了一个快捷方式:
Dim myString As StringBuilder
myString = new StringBuilder()
所以不需要再赋值一个新的StringBuilder,因为你已经赋值过了。
现在 Console.WriteLine 应该是 myString.ToString()
,就像
Console.WriteLine (myString.ToString())
这会将 StringBuilder 对象转换为字符串。
字符串生成器是 class。
当您执行 Dim myString as StringBuilder
时,您正在创建一个变量,即内存 space,它将指向 StringBuilder
的实例在内存中的位置。
每当你 Dim
某物时,它的值将是那个 class 的默认值。对于大多数 classes,默认值为 null,尽管整数和布尔值等值类型具有其他默认值(整数为 0,布尔值为 false)
当您执行 = New StringBuilder
时,您正在实例化 StringBuilder class 的对象,现在您的变量 myString 指向内存中的那个位置。
如果省略此步骤,myString.Append("-")
将抛出 NullPointerException,因为 myString 为 null。
Dim myString As StringBuilder = New StringBuilder
是一种简单的方法:
Dim myString As StringBuilder
myString = New StringBuilder
行
Dim myString as StringBuilder
声明一个变量,该变量旨在引用 StringBuilder 实例。在您调用 New 之前,该实例不存在。 New 在内存中的某处创建实例,并 returns 对实例所在内存区域的引用。
让我们试着检查一下这条线。
当你写
Dim myString as StringBuilder = New StringBuilder
(你也可以使用Dim myString = new StringBuilder(),编译器可以从上下文中识别变量的类型)
您将两条指令放在一行中
Dim myString As StringBuilder
myString = New StringBuilder
在第一行中,您声明了一个要引用 StringBuilder 实例的变量,但是此时,该变量(将其视为内存中的 4 个字节的区域)不包含任何内容。该变量的值尚未分配给任何东西,您可以用
来证明它Dim myString As StringBuilder
Dim b As Boolean = False
b = myString Is Nothing
Console.WriteLine(b) ' => outputs True
现在,您调用 New StringBuilder 运算符搜索内存区域,其中有足够 space 存储属于 StringBuilder 的所有内部字段例如,在创建这个区域之后,New 运算符调用 StringBuilder 的无参数构造函数 class(应该将内部字段初始化为所需的任何值)和 RETURNS 指向该区域的值为 StringBuilder 实例分配的内存。正是这个值(对...的引用)将分配给您的 myString 变量,现在不再是 Nothing
myString = New StringBuilder()
b = myString Is Nothing
Console.WriteLine(b) ' => outputs False