相关疑难解决方法(0)

深度克隆对象

我想做的事情如下:

MyObject myObj = GetMyObj(); // Create and fill a new object
MyObject newObj = myObj.Clone();
Run Code Online (Sandbox Code Playgroud)

然后更改未在原始对象中反映的新对象.

我不经常需要这个功能,所以当有必要的时候,我已经使用了创建一个新对象然后单独复制每个属性,但它总是让我觉得有更好或更优雅的处理方式情况.

如何克隆或深度复制对象,以便可以修改克隆对象而不会在原始对象中反映任何更改?

.net c# clone

2135
推荐指数
34
解决办法
77万
查看次数

如何在.NET中执行对象的深层复制(特别是C#)?

我想要一个真正的深拷贝.在Java中,这很容易,但是你如何在C#中做到这一点?

.net c# serialization clone

560
推荐指数
6
解决办法
42万
查看次数

C#对象的深层副本

我正在研究一些用C#编写的代码.在这个应用程序中,我有一个自定义集合定义如下:

public class ResultList<T> : IEnumerable<T>
{
  public List<T> Results { get; set; }
  public decimal CenterLatitude { get; set; }
  public decimal CenterLongitude { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

Results使用的类型是三种自定义类型之一.每个自定义类型的属性只是基本类型(整数,字符串,bools,int?,bool?).以下是其中一种自定义类型的示例:

public class ResultItem
{
  public int ID { get; set; }
  public string Name { get; set; }
  public bool? isLegit { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

如何执行我创建的ResultList对象的深层副本.我发现这篇文章:创建集合中所有元素的深层副本的通用方法.但是,我无法弄清楚如何做到这一点.

c# deep-copy

7
推荐指数
2
解决办法
2万
查看次数

对象分配

我有一个场景,如:

MyClass obj1 = new MyClass();
............//some operations on obj1;
MyClass obj2 = new MyClass();
obj2 = obj1;
Run Code Online (Sandbox Code Playgroud)

我有以下问题:如果我修改任何参数,它在两个对象中都受到影响(因为两者都指向相同的位置) - 但是,当我修改obj2参数时,它不应该修改obj1中的参数值(即意味着两者都不应该指向同一地点).我怎样才能做到这一点?请帮我.我无法在这里克隆,因为myclass没有实现ICloneable,我无法修改myclass.如果我通过序列化和反序列化克隆,它会是一个深度克隆吗?

c#

3
推荐指数
1
解决办法
2万
查看次数

标签 统计

c# ×4

.net ×2

clone ×2

deep-copy ×1

serialization ×1