This is my class
public class csWordSimilarity { public int irColumn1 = 0; public int irColumn2 = 0; public int irColumn3 = 0; public int irColumn4 = 0; public int irColumn5 = 0; }
I want to make that class iterable to be used like the way below
foreach (int irVal in myVarWordSimilarity) { }
myVarWordSimilarity
is csWordSimilarity
type. So I want to iterate all public int
variables. How do I need to modify csWordSimilarity
class for making it iterable like the way above.
You can implement IEnumerable and have the GetEnumerator override return an "iterator" over the variables using the yield statement
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(); } }
Implement IEnumerable
. See Using Iterators (C# Programming Guide)
In your case you could just use the built-in iterator of a List
like so:
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(); } }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With