2009-05-04 57 views
0

我试图将一个业务对象从一个WinForm传递给另一个WinForm进行修改,然后用更新的值重新填充第一个窗体上的文本框等。阅读对象的内存地址

但是,当代码控制返回到第一种形式时,似乎以第二种形式设置的对象值不是“粘住”。

有没有办法在VB.NET中查看对象的内存位置?我想首先确保第二个窗体上的对象变量指向与第一个窗体上的对象相同的内存地址。然后我可以从那里拿走它。

在一个单独的VB项目中,我将一个简单的对象传递给第二个窗体,修改了这些值,并在第一个窗体上重新显示了对象的值。它运行良好。在我的真实应用程序中,我传递了一个对象,该对象是另一个对象的属性,这可能是为什么它不起作用。

解决方案:问题是我使用了DeepCopy()函数,我发现它简化了将一个对象的属性复制到另一个对象的属性。删除该函数并手动将值设置为第二个窗体上传递的对象(例如obj.property1 = searchResult.property1)会使所有内容都按预期运行。

回答

3

您无法在VB.NET中看到对象的内存地址。

你能告诉我们一些代码吗?也许我们可以发现错误。

你传递什么样的对象?如果对象是一个值类型,这将不起作用(用Structure而不是Class来声明)。

+0

我当时就是这么说的。在.NET中,对象通常表现为你所描述的,HardCode。有些代码可以帮助我们了解发生的事情。 – 2009-05-04 19:52:48