c# - IEnumerable<T> 的扩展方法,返回 -this- 类型

标签 c# ienumerable

正如我所见,大多数 IEnumerable 扩展都会吃掉 IEnumerable,然后又吐出 IEnumerable。是否可以创建一个扩展方法,它可以吃任何 IEnumerable (如 List),然后返回相同的类型 - List?

例如,我想迭代集合,如果出现问题,我会抛出异常,但如果一切正常,我需要返回相同的实例(相同类型)。

最佳答案

您需要使用两个通用参数:

public static TEnumerable Foo<TEnumerable, TItem>(this TEnumerable sequence)
    where TEnumerable: IEnumerable<TItem>
{
    return sequence;
}

请注意,由于此更改,您在调用此方法时将无法推断通用参数;您必须明确指定它们。

关于c# - IEnumerable<T> 的扩展方法,返回 -this- 类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28680565/

相关文章:

c# - MongoDB 2.4.8 限制集合和可尾游标消耗所有内存

c# - 试图让 IsEnabled 绑定(bind)到依赖属性

c# - 这段代码是防御性编程,还是不好的做法?

c# - UnitTesting List<T> of custom objects 与 List<S> of custom objects for equality

c# - 使特定的 ListView 项目在通用 Windows 平台中不可点击

c# - 动态字段名称

c# - 为什么 .net 中的数组只实现 IEnumerable 而不是 IEnumerable<T>?

c# - 在方法的参数中使用 IEnumerable<T> 类型

c# - 有没有办法枚举一个类中的所有静态函数?

c# - 使用 IReadOnlyCollection<T> 而不是 IEnumerable<T> 作为参数以避免可能的多重枚举