将引用类型从一个C#复制到另一个C#

马克斯·马迪

下面是我的课

 public Class Test 
 {
     int id {get;set;}
     string name {get;set;}
 }

我正在创建此类的对象并分配值。

   var obj = new Test();
   obj.id = 1;
   obj.name = "test";
   var newobj = obj;
   newobj.name ="NewTest";

下面是输出

  Console.WriteLine(obj.name); //NewTest
  Console.WriteLine(newobj.name); //NewTest

当我更改新obj中存在的属性的值时,为什么obj的值正在更改。我知道它的解决方案,我不确定为什么找不到。如果我在newobj中更改了值,我不想更改obj的值。

亚历克斯

您并不是在创建副本,而只是在将对象(obj的引用分配给另一个变量(newobj)。访问它们中的任何一个都指向内存中的相同位置。

要创建对象的副本,您必须对其进行克隆。例如,请参阅https://stackoverflow.com/a/78612/1028323 https://stackoverflow.com/a/129395/1028323

public static T DeepClone<T>(T obj)
{
 using (var ms = new MemoryStream())
 {
   var formatter = new BinaryFormatter();
   formatter.Serialize(ms, obj);
   ms.Position = 0;

   return (T) formatter.Deserialize(ms);
 }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

C# 将多个 XMLNodes 或 XMLNodeList 从一个 XMLDocument 复制到另一个

C#将最后一个文件从一个文件夹复制到另一个生成的文件夹

使用C#中的cmd将文件从一个目录复制到另一个目录

Neo4J-将所有关系从一个节点复制到另一个节点(C#包装器)

将代码从一个解决方案复制到另一个 c# (Visual Studio)

将DataTable列的值复制到另一个DataTable行C#

C#将ListBox.SelectedItems复制到另一个变量

C#将画布的所有子代复制到另一个画布

在C中以相反的顺序将字节从一个文件复制到另一个文件

使用C ++将文件从一个目录复制到另一个目录

将一个链表复制到另一个链表 C++

如何将键值对引用从一个映射复制到另一个相同类型的映射?

将数据从一个hbase表复制到另一个

将权限从一个文件复制到另一个文件

将条目从一个keepass文件复制到另一个

将条件从一个对象复制到另一个对象

将文件从一个目录复制到另一个目录

将特定的列从一个DataTable复制到另一个

将变量从一个TensorFlow图复制到另一个

将架构从一个容器复制到另一个

将文本从一个终端复制到另一个终端

将文件从一个NAS复制到另一个

将几列从一个表复制到另一个

将文件从一个拉链复制到另一个?

将文件从一个目录复制到另一个目录

将条目从一个Multimap复制到另一个

将数据从一个Excel复制到另一个Excel

将列从一个jtable复制到另一个

将数据从一个 sqlite 表复制到另一个