Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 是否可以将泛型IEnumerable传递给函数?_C#_Function_Ienumerable - Fatal编程技术网

C# 是否可以将泛型IEnumerable传递给函数?

C# 是否可以将泛型IEnumerable传递给函数?,c#,function,ienumerable,C#,Function,Ienumerable,我有这个功能: private void Pager(IEnumerable<t> tEnum) { ... } 专用无效寻呼机(IEnumerable tEnum) { ... } 我想传递不同的IEnumerable,比如IEnumerable或IEnumerable 有可能吗?也许这样 private void Pager<t>(IEnumerable<t> tEnum) 专用无效寻呼机(IEnumerable tEnum) 当然可以。只需将

我有这个功能:

private void Pager(IEnumerable<t> tEnum)
{
   ...
}
专用无效寻呼机(IEnumerable tEnum)
{
...
}
我想传递不同的IEnumerable,比如
IEnumerable
IEnumerable

有可能吗?

也许这样

private void Pager<t>(IEnumerable<t> tEnum)
专用无效寻呼机(IEnumerable tEnum)

当然可以。只需将方法设置为通用:

private void Pager<T>(IEnumerable<T> tEnum)
{
   ...
}
专用无效寻呼机(IEnumerable tEnum)
{
...
}

如果您查看LINQ to objects扩展方法,它们也是这样做的(根据扩展方法语法,在
IEnumerable
之前没有额外的
this

您可以使整个函数通用:

private void Pager<T>(IEnumerable<T> tEnum)
{
   // here T can be anything
}

// you can call it like:
Pager(new int[]{10,20});
Pager(new string[]{"meep","x"});
专用无效寻呼机(IEnumerable tEnum)
{
//这里什么都可以
}
//你可以这样称呼它:
寻呼机(新int[]{10,20});
寻呼机(新字符串[]{“meep”,“x”});

我同意您的解决方案可能是OP所追求的,但我只是想知道
私人无效寻呼机(IEnumerable tEnum)
是否可以工作。可以想象,不需要告诉方法T是什么类型是有用的。你觉得怎么样?@bazz在.NET4中应该没问题,因为
IEnumerable
被标记为协变(它实际上被声明为
IEnumerable
)。在不了解该方法的内部结构的情况下,很难说该方法是否会明显更糟,但我认为总体而言,最好是将该方法变得通用。@Bazzz还有一点:虽然它看起来不适用于OP的情况,但总体而言,泛型版本可以接受并使用
IEnumerable
,而不必在枚举时取消对元素的装箱,而
IEnumerable
在这种情况下会接受并使用。