SORU
29 NİSAN 2010, PERŞEMBE


'İEquatable ve geçersiz Nesne arasında ki fark ne.() Eşittir?

Gıda sınıfı başka bir sınıfa eşit olduğunda test etmek istiyorum. Daha sonra bir Liste karşı kullanacağım, ve kendi Listesini kullanmak istiyorum.() Yöntemini içerir. İEquatable uygulamak ya da sadece Nesne geçersiz kılmak gerekir.() Eşittir? MSDN:

Bu yöntem eşitlik belirler tarafından varsayılan eşitlik karşılaştırıcısı kullanarak, nesne tarafından tanımlanan bu uygulama İEquatable.T Equals yöntemi (listedeki değerleri yazın).

Fonksiyonları sınıflar/. bir sonraki sorum şu ki: NET çerçeve Nesnesi.() Eşittir? İlk etapta bunu kullanmalıyım?

Teşekkürler

CEVAP
29 NİSAN 2010, PERŞEMBE


Ana nedeni performans. Jenerik tanıttı vardı .NET 2.0*, Dictionary<K,V>, HashSet<T>*0, vb gibi düzgün bir sürü ders eklemek için başardık. Bu yapılar GetHashCode Equals ağır faydalanmak. Ama değer türleri için bu boks gerekli. IEquatable<T> bir yapı yok boks gereklidir bu yüzden kesinlikle yazılmış Equals bir yöntem uygulamaya olanak sağlar. Genel koleksiyonları ile değer türleri kullanarak, bu nedenle çok daha iyi performans.

Başvuru türleri olarak pek bir faydası yok ama IEquatable<T> Uygulama sık deniyor eğer bir fark yaratabilir System.Object alçı kaçınalım.

Jared Parson's blog rağmen belirtildiği gibi, hala Nesne geçersiz kılar uygulamak gerekir.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • David Tedeyev

    David Tedeye

    20 AĞUSTOS 2011
  • How To Cook That

    How To Cook

    16 NİSAN 2011
  • Paulo Bautista

    Paulo Bautis

    21 Aralık 2008