C# 复制引用本身?
有没有办法让我复制一个引用本身?例如,我在表单上添加了一个ListView控件,我希望持久化它的Items集合,即C# 复制引用本身?,c#,.net,C#,.net,有没有办法让我复制一个引用本身?例如,我在表单上添加了一个ListView控件,我希望持久化它的Items集合,即 ListViewItemCollection lvic = ListView.Items(); 当我调用ListView.Items.Clear()时,lvic不应该被清除。简单的尝试方法 ListViewItem[] items = new ListViewItem[listView1.Items.Count]; listView1.Items.CopyTo(items
ListViewItemCollection lvic = ListView.Items();
当我调用ListView.Items.Clear()时,lvic不应该被清除。简单的尝试方法
ListViewItem[] items = new ListViewItem[listView1.Items.Count];
listView1.Items.CopyTo(items, 0);
或
您需要创建对象的克隆,您可以查看这篇讨论对象克隆的帖子:
本文讨论了两种类型的克隆
1. Deep Cloning
2. Shallow Copy
克隆/复制是一个广泛的主题。这取决于具体情况。在您的情况下,您可以简单地使用Linq创建集合的副本
ListViewItem[] copiedItems = ListView.Items().OfType<ListViewItem>().ToArray();
ListViewItem[]copiedItems=ListView.Items().of type().ToArray();
在这种情况下,请小心克隆。无法将ListViewItemCollection的实例分配给ListView,并且ListView或ListViewItem的副本仍然使用一些本机资源(在winforms和wpf世界中),因此,如果使用错误,复制将导致严重的错误您已经在用该语句复制引用了。我想您要复制的是被引用的集合,而不是引用本身。我只需要保留Items集合,以便在清除集合后可以访问它。然后复制集合的Items。LOL,浅克隆而不是阴影