我不明白为什么在将列表传递给方法时Value(string s)从不调用方法的元素.下面是我从LinqPad中提取的测试代码.List<string>ToString<M>(List<M> list)
Value()在迭代ToString<M>(List<M> list) 方法之外的列表时调用正确的方法没有问题.
谢谢!
void Main()
{
var list1 = new List<string>{"one","two","three"};
var list2 = new List<object>{1,2,3};
var list3 = new List<long>{1,2,3};
"Strings".Dump();
ToString<string>(list1);
//list1.ForEach(i=> Value(i)); // proper overload of Value() is called
"Objects".Dump();
ToString<object>(list2);
//list2.ForEach(i=> Value(i));
"Longs".Dump();
ToString<long>(list3);
//list3.ForEach(i=> Value(i));
}
public static string ToString<M>(List<M> list)
{
var sb = new StringBuilder();
foreach(M i in list)
{
sb.AppendFormat("{0},", Value(i));
}
var str = sb.ToString();
str.Dump();
return str;
}
public static …Run Code Online (Sandbox Code Playgroud)