List.Sort(
kullanarak nesnelerin listesini sıralamaya çalışıyorum, ancak çalışma zamanında dizideki öğeleri karşılaştıramadığını söyler.Neden ataşe sınıfında IComparable <T> kullanamaz ve alt sınıfları karşılaştırılamıyor?
public abstract class Parent : IComparable<Parent> {
public string Title;
public Parent(string title){this.Title = title;}
public int CompareTo(Parent other){
return this.Title.CompareTo(other.Title);
}
}
public class Child : Parent {
public Child(string title):base(title){}
}
List<Child> children = GetChildren();
children.Sort(); //Fails with "Failed to compare two elements in the array."
Neden IComparable<T>
uygulayan bir baz alt sınıflarını karşılaştırma olamaz:
dizide
Sınıf yapısını iki öğe karşılaştırmak için başarısız oldu? Muhtemelen bir şeyleri özlüyorum ama neden buna izin verilmemesi gerektiğini göremiyorum.
Düzenleme: (SharePoint 2010)
Edit2 .NET 3.5 hedefliyorsam olduğunu açıklamak olmalı: .NET 3.5 sorundur (aşağıya cevap bakınız).
Bu, çalışma zamanı istisnası gibi görünüyor, belki de çocuklarınızdan birinin "Başlık" değeri null? Ya da listenizde boş bir yer var mı? – nvoigt
http://stackoverflow.com/questions/1658661/failed-to-compare-two-elements-in-the-array –
.NET 4 ile çalışıyorum ama [** ideone ** değil] (http: //ideone.com/rZ0rVL), hangi .NET sürümünü kullanıyorsunuz? –