Dictionary.TryGetValue中的out参数是否通过引用指向该值

时间:2012-11-26 08:24:35

标签: c# dictionary reference

考虑我有一个Dictionary<Key,List<item>> TestDictionary

如果我这样做:

List<item> someCollection;
TestDictionary.TryGetValue(someKey,out someCollection); //assuming that someCollection will not return null;
someCollection.add(someItem);

将对象someItem添加到Dictionary值TestDictionary [someKey]中的集合中吗?

2 个答案:

答案 0 :(得分:11)

是的,如果对象是Ref类型,你将有一个对象的引用,当然,如果它是Value类型,你将有一个副本

答案 1 :(得分:2)

Jon Skeet在这方面发布了great article。但是,无论如何,这里的代码片段可以帮助您:

class Item
{}

void Main()
{
    var dictionary = new Dictionary<int, Item>();
    dictionary[1] = new Item();

    Item i1;
    Item i2;

    dictionary.TryGetValue(1, out i1);
    dictionary.TryGetValue(1, out i2);

    Debug.Assert(object.ReferenceEquals(i1, i2));
}