मैं दूसरे दिन यह देखा, कहते हैं कि तुम दो अतिभारित तरीकों:विधि अधिभार संकल्प
public void Print<T>(IEnumerable<T> items) {
Console.WriteLine("IEnumerable T");
}
public void Print<T>(T item) {
Console.WriteLine("Single T");
}
इस कोड:
public void TestMethod() {
var persons = new[] {
new Person { Name = "Yan", Age = 28 },
new Person { Name = "Yinan", Age = 28 }
};
Print(persons);
Print(persons.ToList());
}
प्रिंट:
Single T
Single T
Person[]
और List<Person>
T
से बेहतर मिलान क्यों हैं इन मामलों में IEnumerable<T>
से वे हैं?
धन्यवाद,
अद्यतन: इसके अलावा, अगर आप एक और अधिभार है
public void Print<T>(List<T> items) {
Console.WriteLine("List T");
}
Print(persons.ToList());
वास्तव में List T
बजाय Single T
प्रिंट होगा।
कॉलिंग 'प्रिंट (व्यक्तियों के रूप में IENumerable);' अन्य विधि को कॉल करना चाहिए।सामान्य विधि देखने से 'व्यक्ति []' 'के लिए IEnumerable ' एक अंतर्निहित डाली नहीं करता है। जब आप फोन 'person.ToList()' अपने तत्काल प्रकार एक 'सूची ' (यह भी कोई अंतर्निहित कलाकारों की आवश्यकता होती है) है। –
+1 मैं इस मुद्दे के साथ थोड़ा सा झुका रहा हूं। दूसरे शब्दों में – Dan