'İ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
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.
Tırnak işaretleri olmadan tırnak tuşla...
'arasında < fark ne;?> ve &l...
Ne fark var arasında #include <file...
Geçersiz kılınmış bir Sistem için en i...
Neden önemli GetHashCode yöntem geçers...