【发布时间】:2012-05-13 04:39:44
【问题描述】:
我有两种扩展方法:
public static string ToString(this List<object> list, char delimiter)
{
return ToString<object>(list, delimiter.ToString());
}
public static string ToString(this List<object> list, string delimiter)
{
return ToString<object>(list, delimiter);
}
当我使用这个时:
char delimiter = ' ';
return tokens.ToString(delimiter);
这行不通。 char 重载也不会出现在代码完成列表中。谁能告诉我如何使这项工作?
编辑
一不小心忘了说其实有3种扩展方法,第三种是:
public static string ToString<T>(this List<T> list, string delimiter)
{
if (list.Count > 0)
{
string s = list[0].ToString();
for (int i = 1; i < list.Count; i++)
s += delimiter + list[i].ToString();
return s;
}
return "";
}
【问题讨论】:
-
是我自己还是你的 ToString 方法无限期地调用自己?
-
tokens变量的类型是什么?
-
查看我的答案的编辑,作为您编辑的后续。
-
最后一个 ToString 应该真正使用 StringBuilder 而不是将列表项附加到本地字符串...
-
标签: c# extension-methods overloading