Clé*_*cou 1 c# generics ienumerable
我编写了一个实现IEnumerable的类:
public class MyEnumerable : IEnumerable<MyClass>
{
IEnumerator IEnumerable.GetEnumerator()
{
return this.GetEnumerator();
}
public IEnumerator<MyClass> GetEnumerator()
{
//Enumerate
}
}
Run Code Online (Sandbox Code Playgroud)
我想"覆盖"Where方法.我想做的是:
MyEnumerable myEnumerable = new MyEnumerable();
MyEnumerable myEnumerable2 = myEnumerable.Where(/*some predicate*/);
Run Code Online (Sandbox Code Playgroud)
目前这是不可能的,因为myEnumerable.Where()返回一个IEnumerable.我想要的是myEnumerable.Where()返回一个MyEnumerable.
这有可能吗?
谢谢
当然 - 只需添加Where方法即可MyEnumerable.Linq Where方法是一种扩展方法,因此从技术上讲它不是一种覆盖.你正在"隐藏"linq方法.
public class MyEnumerable : IEnumerable<MyClass>
{
IEnumerator IEnumerable.GetEnumerator()
{
return this.GetEnumerator();
}
public IEnumerator<MyClass> GetEnumerator()
{
//Enumerate
}
public MyEnumerable Where()
{
// implement `Where`
}
}
Run Code Online (Sandbox Code Playgroud)
但是有一些警告:
MyEnumerable- 它才会被调用,而不会在类型的变量IEnumerable<MyClass>(或任何实现它的集合,如List<MyClass>Where如果您想要与Linq保持一致,还需要实现几个重载.| 归档时间: |
|
| 查看次数: |
2082 次 |
| 最近记录: |