2012-11-21 50 views
0

如何退還返回字典elment的值時存在關鍵是

dictionary <string, int > 

元素的值時,關鍵是找到的第一次???。

我在試下面的代碼,但我確定我做錯了什麼。因爲它需要很長時間才能返回價值。

 private int GetIndex(string term) 
    { 
     int index = 0; 
     foreach (var entry in dic) 
     { 

      var word = entry.Key; 
      var wordFreq = entry.Value; 

      if (word == term) 

       index = wordFreq; 

     } 
     return index; 
    } 

請幫忙嗎?非常感謝

回答

3

就直接提出要求:

return dic[term] 

這應該做的伎倆!

但是,如果你想返回0,當它不存在,就這樣走了:並不意味着

int i; 
if (dic.TryGetValue(term), out i) 
    return i; 
else 
    return 0; 
+0

@非常感謝你Rene。 – FSm

+0

您的兩個解決方案都適合我。但我想知道爲什麼大多數程序員聲稱我們不能索引字典的元素! – FSm

+1

'Dictionary <>'是索引的首先鍵入所以在你的情況下它的字符串,如果你有'int,string' int是索引,就像一個數組[索引]工作 –

1

Dicitionaries以線性的方式使用,並通過多項一個沒有索引他們。每個密鑰都是唯一的散列值,計算時可以返回內部位置。是的,你可以像字典一樣對字典進行枚舉,但這不是字典意味着要使用的。

1

Dictionary已經爲此定義了一些東西。如果您希望在未找到密鑰時發出異常,請使用indexer property,例如, dic[term]。如果您不希望它拋出,而是得到bool說明是否找到它,請使用TryGetValue method,例如,

int result; 
if (dic.TryGetValue(term, out result)) 
    // do something 
相關問題