只要你不宜用名称ToString
的扩展方法,因为它永远不会被调用,因为该方法已经存在,你不应该使用T
作为其用武之地那里。
例如我想这和它再次回到同一件事:
Console.WriteLine(lst.ToString<int>());
输出:
shekhar, shekhar, shekhar, shekhar
所以这一次我用int
,它仍然跑了,因为T没有其他用途则改变方法原型。
那么简单,为什么您使用的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。对MSDN的引用:http://msdn.microsoft.com/en-us/library/bb383977.aspx(请参阅示例部分) – madhurtanwani