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

  • emimusic

    emimusic

    10 Mart 2006
  • MrRandomSong

    MrRandomSong

    29 Kasım 2009
  • SellerDp

    SellerDp

    27 EKİM 2009