具有通用集合参数的方法

3

我有一个方法,应该接受任何类型的集合(可能是 IEnumerable<T>List<T>),例如 List<int>List<string>

在方法内部,我需要迭代集合并将每个元素转换为字符串,并将它们添加到一个最终字符串中,例如:

"(12, 123, 22)"

问题是如何定义参数集合可以是任何类型。我想这与泛型有关,但我不太了解它。
然而,我认为方法定义应该看起来像这样:
public string myMethod(List<T> list) { }

然而,编译器不允许这样做。请问正确的语法是什么?
1个回答

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

谢谢,非常好用。但我有一个问题。有时我需要传递null而不是List<T>。当我尝试这样做时,它是不可能的。我得到编译器错误:错误3:无法从使用中推断出方法'MainWCFRole.DB.TrackDAO.getTracks<T>(string, System.Collections.Generic.List<T>)'的类型参数。请明确指定类型参数。 - user1018711
@Vojtech:尝试进行强制类型转换:(List<X>)null - abatishchev

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接