Ne daha etkili olur: Sözlük TryGetValue veya ContainsKey Madde?
Msdn'den Dictionary.TryGetValue Method giriş:
Bu yöntem ContainsKey yöntemi birleştirir işlevselliği ve Item özelliği.
Eğer anahtar bulunursa, o zaman değeri parametre uygun olur değeri yazın TValue; örneğin, 0 (sıfır) için varsayılan değer tamsayı çeşitleri, Boolean türleri için yanlış, ve bir null başvuru türleri için.
Eğer kodunuzu sık sık erişmeye çalışırsa TryGetValue yöntemi kullanın olmayan anahtarlar sözlükte. Bu yöntemi kullanarak daha fazla verimli KeyNotFoundException Öğe tarafından atılan yakalamaktan özellik.
Bu yöntem(1) Ç işlemi yaklaşımlar.
Bu açıklama, eğer ContainsKey arama ve arama yapmaktan daha verimli ya da daha uygun ise belli değil. TryGetValue
Bu uygulama sadece ContainsKey ve sonra Öğeyi arayın ya da aslında tek bir arama yaparak daha verimli olur mu?
Diğer bir deyişle, daha verimli (daha az aramaları gerçekleştiren yani)
Dictionary<int,int> dict;
//...//
int ival;
if(dict.ContainsKey(ikey))
{
ival = dict[ikey];
}
else
{
ival = default(int);
}
ya
Dictionary<int,int> dict;
//...//
int ival;
dict.TryGetValue(ikey, out ival);
Not: bir kriter aramıyorum!
CEVAP
TryGetValue
daha hızlı olacaktır.
ContainsKey
dahili gerçek giriş yeri ifade eder TryGetValue
, aynı hesabı kullanır. Item
özelliği aslında hemen hemen aynı kod işlevi false döndürmek yerine, bir özel durum yaratacak hariç TryGetValue
, gibi.
ContainsKey
maddenin ardından kullanarak bu durumda hesaplama toplu olan temel arama işlevselliği çoğaltır.
Bir veya daha fazla boşluk veya sekme ...
Android - Nasıl dinamik olarak değişti...
Sözlük vs ve neden?daha verimli olan N...
Pythonic her n iadesi listesine yolu&#...
MySQL ınsert NULL veya boş bir dize iç...