C#按值复制对象
我有一个具有许多属性的对象,我需要在每次迭代中创建该对象的副本,以便所有属性都以其最后一个设置值复制到新生对象中。C#按值复制对象,c#,copy,clone,return-by-value,C#,Copy,Clone,Return By Value,我有一个具有许多属性的对象,我需要在每次迭代中创建该对象的副本,以便所有属性都以其最后一个设置值复制到新生对象中。 (我无法逐个复制所有属性及其值,因为我的对象实际上是一个自定义用户控件,它有许多属性,我不知道所有属性!)您可以使用此扩展方法复制所有对象字段和属性。当您尝试复制引用类型的字段和属性时,可能会出现一些错误 public static T CopyObject<T>(this T obj) where T : new() { va
(我无法逐个复制所有属性及其值,因为我的对象实际上是一个自定义用户控件,它有许多属性,我不知道所有属性!)您可以使用此扩展方法复制所有对象字段和属性。当您尝试复制引用类型的字段和属性时,可能会出现一些错误
public static T CopyObject<T>(this T obj) where T : new()
{
var type = obj.GetType();
var props = type.GetProperties();
var fields = type.GetFields();
var copyObj = new T();
foreach (var item in props)
{
item.SetValue(copyObj, item.GetValue(obj));
}
foreach (var item in fields)
{
item.SetValue(copyObj, item.GetValue(obj));
}
return copyObj;
}
publicstatict CopyObject(这个T对象),其中T:new()
{
var type=obj.GetType();
var props=type.GetProperties();
var fields=type.GetFields();
var copyObj=newt();
foreach(道具中的var项目)
{
item.SetValue(copyObj,item.GetValue(obj));
}
foreach(字段中的变量项)
{
item.SetValue(copyObj,item.GetValue(obj));
}
返回copyObj;
}
您尝试过什么?请出示物品。为什么不能一个接一个地复制属性?对象实际上是我自己创建的用户控件。我不知道用户控件的所有属性@ReyanChougle,谢谢你的评论,我不能实现自定义克隆函数,因为我的对象是一个用户控件,并且有很多属性。