Dictionary和ArrayList的问题

时间:2013-11-08 12:47:06

标签: c# dictionary arraylist

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

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

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

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

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

提前谢谢大家。

2 个答案:

答案 0 :(得分:2)

我认为您需要有关ValueTypesReferenceTypes

的教程

假设RFile是一个类,那么对RFile实例的任何更改都将反映在它共享相同RFile实例的所有其他位置,因为它是“引用类型” ,无论你是否以ref传递它。

ref关键字的用途不同,这超出了这个问题的范围。您可能还需要了解ref关键字。

以下是关于Value type vs Reference type

的优质资源

答案 1 :(得分:2)

即使您不使用ref-keyword,也始终通过引用传递类。

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

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
}