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

  • Film Riot

    Film Riot

    16 NİSAN 2006
  • InfoPuppet

    InfoPuppet

    15 Kasım 2011
  • trickycharms

    trickycharms

    6 Aralık 2013