我有一个方法,它应该接受任何类型(例如 IEnumerable<T>
或 List<T>
)的集合(可能是 List<int>
或 List<string>
)。
在方法内部我需要迭代集合并将每个元素转换为字符串并将它们添加到一个最终字符串中,例如:
"(12, 123, 22)"
问题是如何定义参数集合可以是任何类型。我想这是关于泛型的东西,但我对此了解不多。
但是,我认为方法定义应该是这样的:
public string myMethod(List<T> list) { }
但是,编译器不允许。你能告诉我正确的语法吗?
最佳答案
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 .
关于c# - 具有通用集合参数的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9654936/