小编kda*_*ylo的帖子

永远不会调用带有字符串参数的重载方法,而是调用带有object参数的方法

我不明白为什么在将列表传递给方法时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)

c# overloading

4
推荐指数
1
解决办法
119
查看次数

标签 统计

c# ×1

overloading ×1