如何使类可迭代?

这是我的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) { } 

myVarWordSimilaritycsWordSimilarity类型。 所以我想迭代所有公共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(); } }