新手写文章 , 语句有点不通顺的话 , 还请见谅 ,不喜勿喷 , 若有更好的说明和方法 , 欢迎评论。
(很早的问题了 , 以前一直没写文章的习惯 , 现在回忆着写吧 , 见谅。)
在工作中遇到这么一个情况 , 有一个ModelA对象(在循环前声明的) ,循环加入一个List<ModelA>中 , 但每次循环时 , ModelA的其中一个Users属性是不同的 , 每次去New一个对象赋值就显得代码很"臃肿"了 , 于是了解到克隆这个方法。BinaryFormatter以二进制格式序列化和反序列化对象。更多关于BinaryFormatter的知识 , 就自己查找吧(嘿嘿~)。
调用方法后 , 你会发现List<ModelA>中的数据为["小明0","小明1","小明2"] , 但他们的Age都是一样的 , 这样就避免了 , 你手动去实例化并且赋值ModelA的"臃肿"了。
// Class ModelA
[Serializable]
public class ModelA
{
public int Age{ get; set;}
public string users{ get; set;}
//序列化, 反序列化对象 ,并返回对象,
public ModelA copy()
{
using (Stream objectStream = new MemoryStream())
{
IFormatter formatter = new BinaryFormatter();
formatter.Serialize(objectStream, this);
objectStream.Seek(0, SeekOrigin.Begin);
return formatter.Deserialize(objectStream) as ModelA;
}
}
}
//调用方法
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
#region 调用
List<ModelA> l_Model = new List<ModelA>();
ModelA ModelTest = new ModelA();
ModelTest.Age = 10;
for (int i = 0; i < 3; i++)
{
ModelTest.Users = "小明" + i;
l_Model.Add(ModelTest.copy());
}
#endregion
}
}