從MSDN在Dictionary.TryGetValue方法上的條目:此方法結合了ContainsKey方法和Item屬性的功能。如果找不到鍵,則value參數將為值類型TValue獲取適當的默認值;否則,值為0。例如,對于整數類型,0(零),對于布爾類型,false(假),對于引用類型,null。如果您的代碼經常嘗試訪問不在字典中的鍵,請使用TryGetValue方法。使用此方法比捕獲Item屬性引發的KeyNotFoundException更有效。此方法接近O(1)操作。從描述中,尚不清楚它是否比調用ContainsKey然后進行查找更有效或更方便。TryGetValue只是先調用ContainsKey然后再實現Item 的實現,還是實際上比通過一次查找更有效?換句話說,什么是更有效的(即哪個執行的查詢更少):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);注意:我不是在尋找基準!
3 回答

白板的微信
TA貢獻1883條經驗 獲得超3個贊
TryGetValue 會更快。
ContainsKey使用與相同的檢查TryGetValue,該檢查內部引用實際的輸入位置。該Item屬性實際上具有與幾乎相同的代碼功能TryGetValue,除了它將引發異常而不返回false。
使用,ContainsKey后跟Item基本上是重復的查找功能,在這種情況下,這是大部分計算。
添加回答
舉報
0/150
提交
取消