Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
简单问题-浅拷贝(VB.Net)_Vb.net_Object_Copy_Deep Copy - Fatal编程技术网

简单问题-浅拷贝(VB.Net)

简单问题-浅拷贝(VB.Net),vb.net,object,copy,deep-copy,Vb.net,Object,Copy,Deep Copy,好吧,我总是对此感到困惑 假设我有这个代码 Public Sub Bar(byRef pMap as clsMap) Dim foo as new FooClass() pMap.listOfFoo.Add(foo) end Sub 这意味着引用'Foo'或'listOfFoo'中存储的项将引用相同的对象,对吗?如果我要更改“foo”的一个属性,但不将其更改为一个新对象,两者都将仍然引用并反映更新的值?是的,您正在存储一个指向foo对象的引用指针,因此如果您在一个位置修改属性,它将在引用foo

好吧,我总是对此感到困惑

假设我有这个代码

Public Sub Bar(byRef pMap as clsMap)
Dim foo as new FooClass()
pMap.listOfFoo.Add(foo)
end Sub

这意味着引用'Foo'或'listOfFoo'中存储的项将引用相同的对象,对吗?如果我要更改“foo”的一个属性,但不将其更改为一个新对象,两者都将仍然引用并反映更新的值?

是的,您正在存储一个指向
foo
对象的引用指针,因此如果您在一个位置修改属性,它将在引用
foo
的所有其他位置可见

如果你想复制你的对象,你应该考虑。