0

我有一个字典,其中 RFile 是一个类,该字典包含将显示在列表视图中的所有数据。

问题是这样的:程序将使用从关联的 listViewItem 获得的键从字典中获取 RFile 类,然后将其添加到 ArrayList

ArrayList Files = new ArrayList();
Foreach (ListViewItem lvi in LV.Groups[1].Items)
     {
          Files.Add(Dict[lvi.tag]);
     }

然后 ArrayList 中的 Files 由 VALUE (没有将 Ref 放在方法标识符中)发送到一个方法,该方法将处理它们并对 Files ArrayList 中的条目进行一些更改,但是这些更改也适用于原始 Dictionary (而且我的价值观不会改变)

我所知道的是,我不会通过引用传递任何数据,除非使用键从字典中获取值是通过引用完成的。

谢谢大家。

4

2 回答 2

2

类总是通过引用传递,即使您不使用 ref 关键字。

您可以实现 ICloanable-interface 并克隆您的对象,因此更改不会影响原始对象:

ArrayList Files = new ArrayList();
Foreach (ListViewItem lvi in LV.Groups[1].Items)
{
          Files.Add(Dict[lvi.tag].Clone());
}

public class RFile : ICloanable{
//Your RFile-code here
}
于 2013-11-08T12:54:59.103 回答
2

我认为您需要有关ValueTypesand的教程ReferenceTypes

据说这RFile是一个类,那么对实例的任何更改RFile都将反映在它共享相同实例的所有其他地方,RFile因为它是“引用类型”,无论您是否传递它ref

关键字的目的ref是不同的,这超出了这个问题的重点。您可能还需要了解ref关键字。

这是关于值类型与引用类型的好资源

于 2013-11-08T12:53:08.287 回答