2017-02-04 44 views
0

我知道一個Dictionary不能確保添加元素​​時的順序保持,我的意思是說,在字典中添加許多項後,如果嘗試使用elementAt(i)方法獲取元素它可以返回一個預期的元素。Exception.Data屬性的IDictionary始終保持順序?

Exception.Data是一個IDictionary,所以我想知道是否在這種情況下是真的,因爲在MSDN文檔中,他們使用foreach遍歷這個屬性來顯示信息,所以我猜測順序是保持在這種情況下。

因此,在Exception.Data的情況下,添加的元素的順序是保持?

+0

「IDictionary」不保證任何順序,但是「IDictionary」的實現可能會這樣做。就我所見,.NET 4.x中的實現是一個內部類ListDictionaryInternal,就我所見,它使用一個鏈接列表來保持順序。然而,在沒有文件保證這種行爲的情況下,依靠它是不明智的。 – Joe

回答

1

嗯......如果這樣的:

//  Extra details: 
//  Key: 'stringInfo'    Value: Information from NestedRoutine2. 
//  Key: 'IntInfo'     Value: -903 
//  Key: 'DateTimeInfo'   Value: 7/29/2013 10:50:13 AM 
//  Key: 'ExtraInfo'    Value: Information from NestedRoutine1. 
//  Key: 'MoreExtraInfo'   Value: More information from NestedRoutine1. 

是列表中的所有關鍵的是,Exception.Data包含,那麼它爲什麼會成爲問題,如果他們是爲了,當你可以做一些事情像這樣:

string[] exceptionList = { "stringInfo", "IntInfo", "DateTimeInfo", "ExtraInfo", "MoreExtraInfo" }; 
foreach (string exceptionName in exceptionList) { 
    if (myData.Exception.Data.ContainsKey(exceptionname)) { 
    // do something with that exception key/value pair 
    } 
}