List实体集合更改任意Model中某一个字段的值,其他Model值也一起变了,引用类型和值类型的问题
来源:互联网 发布:c语言产生0 9的随机数 编辑:程序博客网 时间:2024/05/01 20:41
工作中遇到这么一个问题,现在有一个Model,我需要将该Model变为两个Model并且放入List集合当中去,这两个Model完全一样,但是其中某个字段的值不一样,经过直接赋值我们发现整个List中所有Model的那个字段值都变成一样的了,并没有修改成功,因此设计到了引用类型和值类型的问题,此处用clone方法解决。
例如:
List<Model> modelList = new List<Model>();
Model contentModel = new Model(); //contentModel.ID=0
foreach(string id in idList) // idList(1,2,3)
{
Model model = new Model();
model = contentModel ;
model.ID = id;
modelList .Add(model);
}
// modelList[0].ID = 3 modelList[1].ID = 3 modelList[2].ID = 3
这里发现id并没有赋值到每一个对应的实体当中,而是List中所有Model该字段的值都变成一样的了
解决方法:
1.在实体类中,我们实现ICloneable public class contentModel: ICloneable
2.在实体类中,加上Clone方法
public object Clone()
{
return MemberwiseClone();
}
3.将要修改字段的实体进行克隆
Model model = (Model)contentModel.Clone();
4.此时再次赋值,就可以啦
foreach(string id in idList)
{
Model model = (Model)contentModel.Clone();
model = contentModel ;
model.ID = id;
modelList .Add(model);
}
// modelList[0].ID = 1 modelList[1].ID = 2 modelList[2].ID = 3- List实体集合更改任意Model中某一个字段的值,其他Model值也一起变了,引用类型和值类型的问题
- Django中model的字段类型
- C#解析Json(包含Model中实体类型字段)
- Django -model的字段类型清单
- 关于List<Model>类型 GridView排序问题的解决
- 关于实体为Date类型的字段,如何用model.find(" date>? ",param)方法进行查询?
- 更改实体字段类型,引用实体的类会重新编译【java.lang.NoSuchMethodError】
- Django model字段类型
- python model字段类型
- Django Model 字段类型
- Django model字段类型
- Django model字段类型
- Django Model 字段类型
- Django model字段类型
- Qt Model/View view单元格值改变其相应的背景颜色也变
- hibernate 值类型的set、bag、list和map (非实体bean类型的)
- 一道值类型和引用类型理解的问题
- 值类型和引用类型的传参问题
- 首字母索引侧栏--漂亮且实用!!
- H2的存储子系统——MvStore
- ListView
- Android事件分发机制完全解析,带你从源码的角度彻底理解(下)
- Java发送电子邮件
- List实体集合更改任意Model中某一个字段的值,其他Model值也一起变了,引用类型和值类型的问题
- maven web项目的几种部署方式和常见的出错方式的解决
- [C++11]_[初级]_[shared_ptr的使用场景]
- CodeForces 626 A. Robot Sequence(水~)
- C/C++基础::sizeof() 与 sizeof(string)
- 文件合成器
- LeetCode 30 - Substring with Concatenation of All Words
- iOS initWithFrame:frame] 与 [UIButton buttonWithType] 对比
- 第三方框架