我有一个方法,应接受任何类型的收集(可能是IEnumerable<T>
或List<T>
)(例如List<int>
或List<string>
)。
在方法内部我需要迭代集合并将每个元素转换为字符串并将它们一起添加到一个最终字符串中,如:
"(12, 123, 22)"
问题是如何定义参数集合可以是任何类型。我想这是关于泛型的东西,但我不太了解它。
但是,我的方法定义应该是这样的:
public string myMethod(List<T> list) { }
但是,编译器不允许它。你能告诉我正确的语法吗?
答案 0 :(得分:2)
class A
{
public string myMethod<T>(List<T> list) { }
}
或
class B<T>
{
public string myMethod(List<T> list) { }
}
您可能想要使用IEnumerable<T>
,因为您只需要对序列进行枚举。
使用内置函数可以实现相同的目的:
IEnumerable<X> input = new List<X> { new X(), new X() };
IEnumerable<string> s = list.Select(x => x.ToString());
string result = String.Join(", ", s); // "x, x"
请参阅MSDN。