Dim obj As New CMS_Page
Dim comparisonObj As New CMS_Page
作业
obj = db.CMS_Pages.First(Function(s) s.PageID = pageID)
comparisonObj = db.CMS_Pages.First(Function(s) s.PageID = pageID)
在我的代码中间的某个地方
obj.property = sometextfield.text 'Apparently this also changes the comparisonObj
基本上我最终要做的就是
if (obj.property = comparisonObj.property) then
//...
end if
为什么我不能更改obj.Property
而不更改comparisonObj.Property
中的相同属性?
答案 0 :(得分:1)
的结果是什么?
obj.ReferenceEquals(comparisonObj)
如果是True
,则obj
comparisonObj
。您可以像这样更简洁地进行相同的检查,
obj Is comparisonObj
如果您有VB
背景,则两个变量都是引用到同一个对象。
如果您有C
背景,则两个变量都是指针到同一个对象。
答案 1 :(得分:1)
您可能正在设置“comparisonObj = obj”。你可能想要“comparisonObj = obj.Clone()”。您必须自己实施“克隆”方法。 如果CMS_Page不在您的控制之下,那么您可以创建一个扩展方法来克隆它。
答案 2 :(得分:1)
obj = db.CMS_Pages.First(Function(s) s.PageID = pageID)
comparisonObj = db.CMS_Pages.First(Function(s) s.PageID = pageID)
这两行导致对同一对象的两次引用。因此,当您执行此操作时:obj.property = sometextfield.text
然后comparisonObj
也会反映出此更改。