当前位置: 首页 > 编程语言 > C#

泛型C#复制构造函数分享

时间:2023-04-11 03:04:32 C#

泛型C#复制构造函数为c#类编写泛型复制构造函数的最佳方法是什么?它们都继承自一个抽象基类,所以我可以使用反射来映射属性,但我想知道是否有更好的方法?您可以通过预编译有效地创建浅表副本,例如使用Expression。例如,像这样。对于深拷贝,序列化是最可靠的方法。复制构造函数基本上意味着您有一个参数,即要复制的对象。另外,做一个深拷贝,而不是浅拷贝。如果您不知道什么是深拷贝和浅拷贝,那么请注意:假设您正在复制一个类,该类的字段为一行整数。浅拷贝是:publicclassMyclass(){privateint[]row;publicMyClass(MyClassclass){this.row=class.row}}深拷贝是:publicclassMyclass(){privateint[]row;publicMyClass(MyClassclass){for(inti=0;i深拷贝确实获取实际值并将它们放入新对象的新字段中,而浅拷贝只是复制指针。与浅拷贝,ifset:row[3]=5;然后打印两行,两行都将5作为第四个数字的值。但是,当使用深拷贝时,只有第一个打印会有这个,因为这些行没有有相同的指针。如果可以,避免反射。每个类都应该负责复制自己的属性并将它们进一步发送到基方法。这是我正在使用的构造函数。请注意,由于我的基的性质类,这是一个浅层构造函数,相当简单。应该足以让您入门。publicpartialclassLocationView:Location{publicLocationView(){}//基类复制构造函数publicLocationView(Locationvalue){Typet=typeof(Location);PropertyInfo[]属性=t.GetProperties();foreach(PropertyInfopiinproperties){pi.SetValue(this,pi.GetValue(value,null),null);}}publicQuote报价{get;放;可以参考valueinjecter和quickflectnuget包使用:以上是C#学习教程:通用C#拷贝构造函数分享的所有内容,如果对你有用还需要进一步了解C#学习教程,希望大家多多关注---publicclassMyclass(){privatestring_property;publicMyClass(MyClassobj){this.InjectFrom(obj.DeepClone());}}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: