मैं List.Sort(
का उपयोग कर वस्तुओं की एक सूची क्रमबद्ध करने की कोशिश कर रहा हूं), लेकिन रनटाइम पर यह मुझे बताता है कि यह सरणी में तत्वों की तुलना नहीं कर सकता है।मैं पूर्वजों के वर्ग पर आईसीओपरपेबल <T> का उपयोग क्यों नहीं कर सकता और बाल कक्षाओं की तुलना क्यों कर सकता हूं?
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."
मैं एक आधार है कि IComparable<T>
लागू करता है के उपवर्गों क्यों की तुलना नहीं कर सकते हैं:
वर्ग संरचना सरणी में दो तत्वों की तुलना करने में विफल? मुझे शायद कुछ याद आ रहा है, लेकिन मैं नहीं देख सकता कि इसकी अनुमति क्यों नहीं दी जानी चाहिए।
संपादित करें: स्पष्ट करना चाहिए कि मैं .NET 3.5 लक्षित कर रहा हूँ (2010 SharePoint)
EDIT2: .NET 3.5 समस्या है (नीचे का जवाब देखें)।
जैसा कि यह एक रनटाइम अपवाद प्रतीत होता है, हो सकता है कि आपके बच्चों में से एक को शून्य का 'शीर्षक' हो? या शायद आपकी सूची में एक शून्य है? – nvoigt
http://stackoverflow.com/questions/1658661/failed-to-compare-two-elements-in-the-array –
यह मेरे लिए .NET 4 के साथ काम करता है लेकिन [** ideone ** पर नहीं) [http: //ideone.com/rZ0rVL), आप किस .NET-version का उपयोग कर रहे हैं? –