一个奇怪的VB.NET赋值问题

systexliang 2010-03-12 03:16:27
有两个窗体代码分别如下:
form2关闭后str1的值仍然是0,而ListA的值为什么被更改了?

form1:
Public Class Form1

Private ListA As New List(Of String)
Private str1 As String

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim ListB As List(Of String)
ListB = ListA
Dim str2 As String
str2 = str1

Dim f2 As New Form2
f2.list = ListB
f2.str = str2
f2.ShowDialog()
str2 = f2.str

Dim strList As String = ""
For i As Integer = 0 To 9
strList = strList & ListB.Item(i)
Next
MessageBox.Show(strList)
End Sub

Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
For i As Integer = 0 To 9
ListA.Add("0")
Next
str1 = "0"
End Sub
End Class

form2:
Public Class Form2
Private _list As List(Of String)
Public Property list() As List(Of String)
Get
Return _list
End Get
Set(ByVal value As List(Of String))
_list = value
End Set
End Property

Private _str As String
Public Property str() As String
Get
Return _str
End Get
Set(ByVal value As String)
_str = value
End Set
End Property

Private Sub Form2_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
For i As Integer = 0 To 9
list.Item(i) = "1"
Next
str = "1"
End Sub
End Class
...全文
138 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
CK_Young 2010-08-31
  • 打赏
  • 举报
回复
dddddddddd
CK_Young 2010-08-31
  • 打赏
  • 举报
回复
dddddddddddd
旭子 2010-05-08
  • 打赏
  • 举报
回复
不懂VB “漂”过
lsh2216024 2010-03-13
  • 打赏
  • 举报
回复
确实如此,
学习一下啊
xingyuebuyu 2010-03-12
  • 打赏
  • 举报
回复
引用类型用"="赋值会使用相同的存储空间,值类型不会。
systexliang 2010-03-12
  • 打赏
  • 举报
回复
已解决,谢谢楼上这位大哥.
还想问一下其他对象在名称不同时用"="赋值也会使用相同的存储空间吗?
xingyuebuyu 2010-03-12
  • 打赏
  • 举报
回复
ListB = ListA
就是ListB和ListA两个对象拥有共同的存储空间,你对其中的任何一个进行修改都会导致另外的一个也会修改。

如果你希望互不影响那就这样赋值
Dim ListB As List(Of String)
ListB.AddRange(ListA.ToArray())

16,554

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧