我想做的事情如下:
MyObject myObj = GetMyObj(); // Create and fill a new object
MyObject newObj = myObj.Clone();
Run Code Online (Sandbox Code Playgroud)
然后更改未在原始对象中反映的新对象.
我不经常需要这个功能,所以当有必要的时候,我已经使用了创建一个新对象然后单独复制每个属性,但它总是让我觉得有更好或更优雅的处理方式情况.
如何克隆或深度复制对象,以便可以修改克隆对象而不会在原始对象中反映任何更改?
我有一个HashSet,
var universe = new HashSet<int>();
Run Code Online (Sandbox Code Playgroud)
还有一堆子集,
var sets = new List<HashSet<int>>(numSets);
Run Code Online (Sandbox Code Playgroud)
我想减去一个块,我可以这样做:
var remaining = universe.ExceptWith(sets[0]);
Run Code Online (Sandbox Code Playgroud)
但ExceptWith就地工作.我不想修改universe.我应该先克隆它,还是有更好的方法?