SORU
18 Aralık 2008, PERŞEMBE


Alma Sözlük Değeri En İyi Uygulamalar

Ben sadece son zamanlarda Dictionary.TryGetValue(TKey key, out TValue value) fark ettim ve sözlükten bir değer almak için daha iyi bir yaklaşım olduğu, merak.

Geleneksel olarak yaptım:

if (myDict.Contains(someKey))
     someVal = myDict[someKey];
     ...

biliyorum sürecevardırorada olmak.

Sadece yapacak daha iyi oldu:

if (myDict.TryGetValue(somekey, out someVal)
    ...

Daha iyi bir uygulamadır? Biri, diğerinden daha hızlı mı? Dene sürümü 'yutma' deneyin bir/kendi içinde yakalamak ve bunu kullanarak gibi mantık? olarak daha yavaş olacağını tahmin ediyorum

Teşekkürler!

CEVAP
18 Aralık 2008, PERŞEMBE


TryGetValue FindEntry yalnızca bir kez çağrılır çünkü biraz daha hızlı.

Ne kadar hızlı? Bu bağlıdır eldeki veri kümesi. Bu çağırdığınızda Yöntem, Sözlük bir mu içerir dahili arama dizini bulmak için. Eğer true değerini döndürür, başka bir ihtiyacınız dizin arama gerçek değerini almak için. TryGetValue kullandığınızda, arama yapar bulunan endeks için yalnızca bir kez ve, eğer değişkene değer atar.

BİLGİNİZE: aslında bir hata yakalamak değil.

Arıyor:

public bool TryGetValue(TKey key, out TValue value)
{
    int index = this.FindEntry(key);
    if (index >= 0)
    {
        value = this.entries[index].value;
        return true;
    }
    value = default(TValue);
    return false;
}

ContainsKey bu

public bool ContainsKey(TKey key)
{
    return (this.FindEntry(key) >= 0);
}

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Doc Adams

    Doc Adams

    20 HAZİRAN 2007
  • Peter Sharp

    Peter Sharp

    11 ŞUBAT 2013
  • Whizzpopping

    Whizzpopping

    10 Kasım 2005