2009-05-04 81 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