相关疑难解决方法(0)

754
推荐指数
22
解决办法
55万
查看次数

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

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

.net c# serialization clone

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

如何在C#中克隆通用列表?

我在C#中有一个通用的对象列表,并希望克隆列表.列表中的项目是可复制的,但似乎没有选项可做list.Clone().

有一个简单的方法吗?

c# generics clone list

545
推荐指数
13
解决办法
57万
查看次数

在C#中创建对象的副本

可能重复:
如何在.Net(特别是C#)中深层复制对象?

请看下面的代码(摘自C#书):

public class MyClass 
{
    public int val;
}
public struct myStruct 
{
    public int val;
}
public class Program 
{
    private static void Main(string[] args) 
    {
        MyClass objectA = new MyClass();
        MyClass objectB = objectA;

        objectA.val = 10;
        objectB.val = 20;

        myStruct structA = new myStruct();
        myStruct structB = structA;

        structA.val = 30;
        structB.val = 40;

        Console.WriteLine("objectA.val = {0}", objectA.val);
        Console.WriteLine("objectB.val = {0}", objectB.val);
        Console.WriteLine("structA.val = {0}", structA.val);
        Console.WriteLine("structB.val = {0}", structB.val);

        Console.ReadKey();
    }
}
Run Code Online (Sandbox Code Playgroud)

我知道它会产生下面的输出

objectA.val …
Run Code Online (Sandbox Code Playgroud)

c# reference object cloning

150
推荐指数
4
解决办法
55万
查看次数

在JSON.NET中为反序列化转换接口

我正在尝试建立一个读取器,它将从各种网站中获取JSON对象(想想信息抓取)并将它们转换为C#对象.我目前正在使用JSON.NET进行反序列化过程.我遇到的问题是它不知道如何处理类中的接口级属性.所以有些本质:

public IThingy Thing
Run Code Online (Sandbox Code Playgroud)

会产生错误:

无法创建IThingy类型的实例.Type是接口或抽象类,无法实例化.

让它成为ITINGy而不是Thingy是相对重要的,因为我正在处理的代码被认为是敏感的,单元测试非常重要.对于像Thingy这样的完全成熟的对象,不可能对原子测试脚本的对象进行模拟.它们必须是一个接口.

我一直在研究JSON.NET的文档已有一段时间了,我在这个网站上找到的与此相关的问题都来自一年多以前.有帮助吗?

此外,如果重要,我的应用程序是用.NET 4.0编写的.

.net c# json json.net

116
推荐指数
10
解决办法
11万
查看次数

将对象复制到对象(使用Automapper?)

我有一节课:

public class Person {
    public string FirstName { get; set; }
    public string LastName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我有两个Person实例(person1和person2).我想将person2的内容复制到person1.我想在一个指令中制作此副本,而不是按属性制作属性:

person1.LastName = person2.LastName;
Run Code Online (Sandbox Code Playgroud)

在doc中,我看到将对象复制到另一个对象但类型不同.如何在类型相同时复制对象?

c# automapper

63
推荐指数
4
解决办法
4万
查看次数

如何在LINQ to XML中对元素进行深层复制?

我想制作一个LINQ to XML XElement的深层副本.我想这样做的原因是文档中有一些节点我想创建(在同一文档中)的修改副本.我没有看到这样做的方法.

我可以将元素转换为XML字符串然后重新解析它,但我想知道是否有更好的方法.

.net linq-to-xml

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

如何克隆对象

当我做了某乙以下..任何人修改一个(我以为这样做会克隆从人,将B).我也不知道如果更改Person a将在链接后更改Person b.由于我的代码现在,我只能在一个方向看到这个.

Person a = new Person() { head = "big", feet = "small" };
Person b = a; 

b.head = "small"; //now a.head = "small" too   
Run Code Online (Sandbox Code Playgroud)

现在如果我这样做了.人a变得完全分开.

Person b = new Person() { head = a.head, feet = a.feet };
Run Code Online (Sandbox Code Playgroud)

现在,将此行为与C#中的其他内容进行比较时,这种方法很有意义.但是,对于大型物体,这可能会非常烦人.

有没有办法简化这个?

如:

Person b = a.Values;

c# object

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

如何在c#中制作对象的副本

假设我有一节课:

class obj
{
  int a;
  int b;
}
Run Code Online (Sandbox Code Playgroud)

然后我有这个代码:

obj myobj = new obj(){ a=1, b=2}
obj myobj2 = myobj;
Run Code Online (Sandbox Code Playgroud)

现在上面的代码引用了第一个obj.我想要的是myobj2指副本中myobj没有反映在原文中的副本.我搜索了SO,到目前为止解决方案似乎很复杂.有没有更简单的方法来做到这一点.我正在使用.net 4.5

.net c# clone

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

克隆HashSet <T>的有效方法?

几天前,我回答了一个关于SO 的有趣问题HashSet<T>.一个可能的解决方案涉及克隆hashset,在我的回答中我建议做这样的事情:

HashSet<int> original = ...
HashSet<int> clone = new HashSet<int>(original);
Run Code Online (Sandbox Code Playgroud)

虽然这种方法非常简单,但我怀疑它的效率非常低:新构造函数HashSet<T>需要单独添加原始hashset中的每个项目,并检查它是否已经存在.这显然是浪费时间:因为源集合是a ISet<T>,所以保证不包含重复项.应该有办法利用这些知识......

理想情况下,HashSet<T>应该实施ICloneable,但遗憾的是并非如此.我还检查了Reflector,看看如果HashSet<T>源集合是一个哈希集,构造函数是否做了特定的事情,但事实并非如此.它可能可以通过在私有字段上使用反射来完成,但这将是一个丑陋的黑客......

那么,有人提出了一个更有效地克隆哈希集的聪明解决方案吗?

(请注意,这个问题纯粹是理论上的,我不需要在真实的程序中这样做)

.net performance clone hashset

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