, बस आप नाम ToString
उपयोग नहीं करना चाहिए एक्सटेंशन विधि के लिए के रूप में यह क्योंकि उस पद्धति पहले से ही मौजूद हैं और तुम वहाँ अपने बेकार के रूप में T
उपयोग नहीं करना चाहिए कभी नहीं बुलाया जाएगा।
उदाहरण मैं इस कोशिश की और के लिए इसे फिर से एक ही बात लौटे:
Console.WriteLine(lst.ToString<int>());
उत्पादन:
shekhar, shekhar, shekhar, shekhar
इसलिए इस समय मैं int
इस्तेमाल किया और यह अभी भी भाग गया क्योंकि कि टी तो कोई अन्य उपयोग है विधि प्रोटोटाइप बदल रहा है।
तो बस तुम क्यों ToString
विधि नाम के रूप में शाब्दिक उपयोग कर रहे हैं, के रूप में यह पहले से ही मौजूद है और आप एक एक्सटेंशन विधि में ओवरराइड नहीं कर सकते, इस कारण से आपको लगता है कि T
यह सामान्य बनाने के लिए उपयोग करने के लिए था। कुछ अलग नाम की तरह
public static string ToMyString(this IList<String> list)
इस तरह आप के रूप में यह बेकार वहाँ सामान्य उपयोग करने के लिए नहीं होगा का उपयोग करें और आप बस इसे हमेशा की तरह कह सकते हैं।
यह कहा गया कि आपका कोड मेरे लिए काम कर रहा है। यहाँ है क्या मैं (LINQPad में ) की कोशिश की:
void Main()
{
List<string> lst = new List<string>();
lst.Add("shekhar");
lst.Add("shekhar");
lst.Add("shekhar");
lst.Add("shekhar");
lst.ToString<string>().Dump();
}
public static class ListHelper
{
public static string ToString<T>(this IList<String> list)
{
return string.Join(", ", list.ToArray());
}
public static string ToString<T>(this String[] array)
{
return string.Join(", ", array);
}
}
और जब बुला उत्पादन shekhar, shekhar, shekhar, shekhar
जब से तुम उल्लेख किया है कि T
ToString<T>
में आप string
की तरह एक प्रकार का उल्लेख करने की आवश्यकता होगी या int
था ToString विधि।
+1। एमएसडीएन का संदर्भ: http://msdn.microsoft.com/en-us/library/bb383977.aspx (उदाहरण अनुभाग देखें) – madhurtanwani