2013-06-29 115 views
1

我有一段代碼表示Dictionary和search key array。如何避免使用字典時出現運行時錯誤

Dictionary<string, string> items = new Dictionary<string, string>() 
            { 
            {"1","Blue"}, 
            {"2","Green"}, 
            {"3","White"} 
            }; 

string[] keys = new[] { "1", "2", "3", "4" }; 

如何安全地避免運行時錯誤,當我傳遞一個不存在於字典中的鍵?

回答

2

如何安全地避免運行時錯誤,當我傳遞一個不存在於字典中的密鑰?

您還沒有表現出你是如何目前試圖做到這一點,但您可以使用Dictionary<,>.TryGetValue

foreach (string candidate in keys) 
{ 
    string value; 
    if (items.TryGetValue(candidate, out value)) 
    { 
     Console.WriteLine("Key {0} had value {1}", candidate, value); 
    } 
    else 
    { 
     Console.WriteLine("No value for key {0}", candidate); 
    } 
} 
2

二者必選其一ContainsKeyTryGetValue檢查的一個關鍵的存在。

string val = string.Empty; 
foreach (var ky in keys) 
{ 

       if (items.TryGetValue(ky, out val)) 
       { 
        Console.WriteLine(val); 
       } 

    } 

foreach (var ky in keys) 
{ 

    if (items.ContainsKey(ky)) 
    { 
     Console.WriteLine(items[ky]); 
    } 
    } 

雖然TryGetValue比較快,當你想拉從dictionary.if要檢查鑰匙使用的containsKey存在的價值比的containsKey使用它。

+0

爲什麼要使用'TryGetValue',然後*還*使用索引器?這是沒有意義的 - 在這一點上,你已經獲得了'val'中的值(順便說一句,當你調用方法時,不需要明確賦值)。 –

+0

@Jon,錯字,我修好了。 – 2013-06-29 17:24:51

相關問題