2012-11-26 45 views
3

考慮我有一個Dictionary<Key,List<item>> TestDictionary引用是否在Dictionary.TryGetValue點OUT參數的值

,如果我這樣做:

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

將對象someItem加入到集合中的字典值TestDictionary [someKey]?

+6

是的,你可以自己嘗試。 –

+0

其實你可以通過打印字典項目來證明它。 – Raptor

+0

@JohannesRudolph可能:) –

回答

9

是的,你將有對象的引用,如果它是一個參考類型,當然副本,如果它是值類型

+0

除非你使用盒裝的值類型(把一個整數放入一個Object列表中)。然後,您將有一個盒裝引用值類型。 – CodingBarfield

+0

@CodingBarfield不,這不是我的情況,但很好知道;) –

1

喬恩斯基特在這方面公佈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)); 
} 
相關問題