如标题,自己写了一个查询数据窗体,双击某一行显示该行的详细信息,传过去一个对象DrugDictEntity,名称为DrugDict,修改窗体后的数据之后,保存赋值到对象DrugDictEntity dic 变量中,发现之前传过来的对象DrugDictEntity DrugDict 的数据也跟着修改,也就是DrugDict 和 dic中的数据完全一样,不知道什么原因,还是就这种机制?
ps:想做一个日志,就是保存修改数据之前的老数据和修改完数据之后的新数据
------解决思路----------------------
就是这种机制,如果不想这样跟着改,应该考虑不用对象传递!
------解决思路----------------------
对象是引用类型,dic和你传过去的对象指向同一块地址,修改是对同一块地址修改。
可以维护两个DrugDictEntity变量,作为对比生成修改日志。
------解决思路----------------------
那就用定义两个全局变量 一个用来传递新数据库 一个用来传递老的数据
------解决思路----------------------
1、接收DrugDictEntity的窗体,深度拷贝该对象
2、使用变量接收DrugDictEntity的属性
------解决思路----------------------
在实体类里实现个Copy或Clone函数,需要赋值的时候调用呗
如果你只需要赋值一次,而不是到处赋值,直接属性对属性也可以.
自定义实体类只能属性赋值给属性,你得自己实现深拷贝
------解决思路----------------------
赋值的时候只能是基本类型的赋值给基本类型的,如果是引用类型的肯定就不行了。如果里面还有引用类型的话,就还需要进一步把里面的值也给克隆一下。
int ID = 0;
TestClass testClass = new TestClass();
Public void Clone(DrugDictEntity oldData)
{
DrugDictEntity obj = new DrugDictEntity();
obj.ID = this.ID;
// 在TestClass里面也做一个Clone()方法,类似这个。
obj.testClass = this.testClass.Clone();
}