我有一个字典,其中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中的条目进行一些更改,但是这些更改也适用于原始词典(我不认为那些值会有变化)
我所知道的是,我没有通过引用传递任何数据,除非使用密钥从字典中获取值是通过引用完成的。
提前谢谢大家。
答案 0 :(得分:2)
我认为您需要有关ValueTypes
和ReferenceTypes
。
假设RFile
是一个类,那么对RFile
实例的任何更改都将反映在它共享相同RFile
实例的所有其他位置,因为它是“引用类型” ,无论你是否以ref
传递它。
ref
关键字的用途不同,这超出了这个问题的范围。您可能还需要了解ref
关键字。
答案 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
}