【发布时间】:2013-05-18 04:26:01
【问题描述】:
就像两条重叠的线段,我们可以找到无限的交点。列举所有这些点可能没有意义,我们可能只想展示这个集合是无限的。
浮点数已定义NegativeInfinity 和PositiveInfinity。表示 count 或 ordinal 的数字似乎不需要使用浮点数,但是,整数没有定义为表示无穷大。
所以我尝试实现一个无限可枚举。但是我突然对“可枚举”这个词感到困惑..
有没有更好的方法来解决这个问题?无限可枚举仍然可枚举吗?
-
代码
public partial class Infinity: IEnumerable<object> { IEnumerator<object> IEnumerable<object>.GetEnumerator() { for(; ; ) yield return Infinity.Enumerable; } public IEnumerator GetEnumerator() { for(; ; ) yield return Infinity.Enumerable; } public Infinity LongCount( Func<object, bool> predicate=default(Func<object, bool>)) { return Infinity.Enumerable; } public Infinity Count( Func<object, bool> predicate=default(Func<object, bool>)) { return Infinity.Enumerable; } public static readonly Infinity Enumerable=new Infinity(); }
编辑:
感谢您的回答。我不对IEnumerable 和IEnumerator 感到困惑。 GetEnumerator 方法返回 Infinity.Enumerable 是因为我确实不想要声明一个额外的虚拟对象,例如:
static readonly object dummy=new object();
并在 GetEnumerator 方法中返回 dummy。
【问题讨论】:
标签: c# ienumerable terminology semantics