这是我的班级
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
类以使其可迭代,如上所述。
答案 0 :(得分:26)
您可以实现IEnumerable并让GetEnumerator覆盖使用yield语句对变量返回“迭代器”
class csWordSimilarity : IEnumerable<int>
{
private int _var1 = 1;
private int _var2 = 1;
private int _var3 = 1;
private int _var4 = 1;
public IEnumerator<int> GetEnumerator()
{
yield return _var1;
yield return _var2;
yield return _var3;
yield return _var4;
}
IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
}
答案 1 :(得分:9)
实施IEnumerable
。见Using Iterators (C# Programming Guide)
在你的情况下你可以使用List
的内置迭代器,如下所示:
using System;
using System.Collections.Generic;
class csWordSimilarity : IEnumerable<int> {
public int irColumn1 = 0;
public int irColumn2 = 0;
public int irColumn3 = 0;
public int irColumn4 = 0;
public int irColumn5 = 0;
public IEnumerator<int> GetEnumerator() {
return (new List<int>() {
irColumn1, irColumn2, irColumn3, irColumn4, irColumn5
}).GetEnumerator();
}
System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() {
return GetEnumerator();
}
}