從MSDN在Dictionary.TryGetValue方法上的條目:此方法結(jié)合了ContainsKey方法和Item屬性的功能。如果找不到鍵,則value參數(shù)將為值類型TValue獲取適當(dāng)?shù)哪J(rèn)值;否則,值為0。例如,對(duì)于整數(shù)類型,0(零),對(duì)于布爾類型,false(假),對(duì)于引用類型,null。如果您的代碼經(jīng)常嘗試訪問(wèn)不在字典中的鍵,請(qǐng)使用TryGetValue方法。使用此方法比捕獲Item屬性引發(fā)的KeyNotFoundException更有效。此方法接近O(1)操作。從描述中,尚不清楚它是否比調(diào)用ContainsKey然后進(jìn)行查找更有效或更方便。TryGetValue只是先調(diào)用ContainsKey然后再實(shí)現(xiàn)Item 的實(shí)現(xiàn),還是實(shí)際上比通過(guò)一次查找更有效?換句話說(shuō),什么是更有效的(即哪個(gè)執(zhí)行的查詢更少):Dictionary<int,int> dict;//...//int ival;if(dict.ContainsKey(ikey)){ ival = dict[ikey];}else{ ival = default(int);}要么Dictionary<int,int> dict;//...//int ival;dict.TryGetValue(ikey, out ival);注意:我不是在尋找基準(zhǔn)!
3 回答

白板的微信
TA貢獻(xiàn)1883條經(jīng)驗(yàn) 獲得超3個(gè)贊
TryGetValue 會(huì)更快。
ContainsKey使用與相同的檢查T(mén)ryGetValue,該檢查內(nèi)部引用實(shí)際的輸入位置。該Item屬性實(shí)際上具有與幾乎相同的代碼功能TryGetValue,除了它將引發(fā)異常而不返回false。
使用,ContainsKey后跟Item基本上是重復(fù)的查找功能,在這種情況下,這是大部分計(jì)算。
- 3 回答
- 0 關(guān)注
- 1381 瀏覽
添加回答
舉報(bào)
0/150
提交
取消