SORU
22 Kasım 2010, PAZARTESİ


Yeni Ekle veya varolan bir maddeyi güncelleştirmek için yöntem Sözlüğü

Bazı eski kod, anahtarı zaten varsa, aşağıdaki uzantısı yöntemi anahtar-değer yeni bir madde ekleme veya değer güncellenmesi kolaylaştırmak için görmek zorundayım.

Yöntem-1 (eski kod).

public static void CreateNewOrUpdateExisting<TKey, TValue>(
    this IDictionary<TKey, TValue> map, TKey key, TValue value)
{            
    if (map.ContainsKey(key))
    {
        map[key] = value;
    }
    else
    {
        map.Add(key, value);
    }
}

Gerçi, map[key]=value aynı iş yok kontrol ettim. Bu yöntem 2 aşağıdaki ile değiştirin olabilir.

Yöntem-2.

public static void CreateNewOrUpdateExisting<TKey, TValue>(
    this IDictionary<TKey, TValue> map, TKey key, TValue value)
{
    map[key] = value;
}

Şimdi sorum şu.. Yöntem 2 Yöntem-1 yerine eğer herhangi bir sorun Olabilir mi? Herhangi bir olası senaryoda kıracak?

Ayrıca, bu karma tablo ve Sözlük arasındaki fark eskiden sanırım. Karma tablo bir öğe güncelleme veya Sözlük etmese oluşturucu kullanarak yeni bir madde ekleyerek sağlar!! Bu fark, C elimine# >3.0 versiyon mu?

Amaç bu yöntem değil, fazla bile istisna eğer kullanıcı gönderir aynı anahtar değeri yine, bu yöntem sadece güncelleme girişi ile yeni değeri, ve yeni bir giriş eğer yeni bir anahtar-değer çifti oldu göndermek için yöntem.

CEVAP
22 Kasım 2010, PAZARTESİ


Yöntem 2 Yöntem-1 yerine eğer herhangi bir sorun olabilir mi?

Hayır, sadece map[key] = value kullanın. İki seçenek eşdeğerdir.

İlgili Dictionary<> vs Hashtable: ne Zaman başlıyorsun Reflektör, gördüğünüz oluşturucu belirleyiciler de sınıflar Ara this.Insert(key, value, /* add */ false); add parametre sorumludur atma istisna eklerken yinelenen bir anahtar. Yani bu davranış, her iki sınıf için aynıdır.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Bach Vlogs

    Bach Vlogs

    18 HAZİRAN 2011
  • infiniTuts

    infiniTuts

    18 Ocak 2012
  • UrAvgConsumer

    UrAvgConsume

    1 Ocak 2012