如何使类可迭代?
这是我的class级
public class csWordSimilarity { public int irColumn1 = 0; public int irColumn2 = 0; public int irColumn3 = 0; public int irColumn4 = 0; public int irColumn5 = 0; }
我想使该类可迭代使用,如下所示
foreach (int irVal in myVarWordSimilarity) { }
myVarWordSimilarity
是csWordSimilarity
类型。 所以我想迭代所有公共int
变量。 我如何修改csWordSimilarity
类以使其像上面的方式一样进行迭代。
您可以使用yield语句实现IEnumerable并使GetEnumerator覆盖在变量上返回“迭代器”
class csWordSimilarity : IEnumerable { private int _var1 = 1; private int _var2 = 1; private int _var3 = 1; private int _var4 = 1; public IEnumerator GetEnumerator() { yield return _var1; yield return _var2; yield return _var3; yield return _var4; } IEnumerator IEnumerable.GetEnumerator() { return GetEnumerator(); } }
实现IEnumerable
。 请参阅使用迭代器(C#编程指南)
在您的情况下,您可以使用List
的内置迭代器,如下所示:
using System; using System.Collections.Generic; class csWordSimilarity : IEnumerable { public int irColumn1 = 0; public int irColumn2 = 0; public int irColumn3 = 0; public int irColumn4 = 0; public int irColumn5 = 0; public IEnumerator GetEnumerator() { return (new List () { irColumn1, irColumn2, irColumn3, irColumn4, irColumn5 }).GetEnumerator(); } System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() { return GetEnumerator(); } }