正如我所见,大多数 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/