值类型表示位于堆栈上的简单数据存储。堆栈用于大小已知的数据项,所以堆栈上的数据项检索起来比托管堆上的数据项块。堆栈是一个比较小的内存区域,进程和线程在其中存储大小固定的数据块。
引用类型基于派生于其父类的复杂类,存储在托管堆上。托管堆进行了优化,以支持不同大小的对象的动态内存分配。引用类型没有固定的大小。引用类型的地址可以存储堆栈上。
Point 结构
值类型变量,System.Drawing空间的一部分
https://docs.microsoft.com/zh-cn/dotnet/api/system.drawing.point?view=netframework-4.8
StringBuilder 类
引用类型变量,System.Text空间的一部分。
Public Class Form1
Dim count As Integer
Private Sub ButtonTest_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonTest.Click
count += 1
'MessageBox.Show("Hello World show " & count.ToString & " times", _
' "Hello World message box", _
' MessageBoxButtons.OK, _
' MessageBoxIcon.Information)
'ValueType()
RefType()
End Sub
Private Sub ValueType()
Dim ptX As Point = New Point(10, 20)
Dim ptY As Point
ptY = ptX
'ptX变,ptY不会变
ptX.X = 200
TextBox1.Text = "Pt Y= " & ptY.ToString
End Sub
Private Sub RefType()
Dim objX As System.Text.StringBuilder = New System.Text.StringBuilder("Hello World.")
Dim objY As System.Text.StringBuilder
objY = objX
'objX变化,objY也会变,浅复制(shallow copy)
objX.Replace("World", "Test")
TextBox1.Text = "objY = " & objY.ToString
End Sub
End Class