SORU
21 ŞUBAT 2012, Salı


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
21 ŞUBAT 2012, Salı


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.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • IGN

    IGN

    19 EYLÜL 2006
  • Peyton

    Peyton

    28 Aralık 2008
  • Thehalopianoplayer

    Thehalopiano

    4 ŞUBAT 2011