Comment faire une classe ITRIBLE?
Question
C'est ma classe
public class csWordSimilarity
{
public int irColumn1 = 0;
public int irColumn2 = 0;
public int irColumn3 = 0;
public int irColumn4 = 0;
public int irColumn5 = 0;
}
Je veux rendre cette classe itérable pour être utilisée comme le chemin ci-dessous
foreach (int irVal in myVarWordSimilarity)
{
}
myVarWordSimilarity
est csWordSimilarity
taper. Alors je veux itérer tout public int
variables. Comment puis-je modifier csWordSimilarity
classe pour le rendre itérable comme le chemin au-dessus.
La solution
Vous pouvez implémenter IEnumerable et faire remettre en charge le gardien de Genenumerator un "itérateur" sur les variables en utilisant le rendement déclaration
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();
}
}
Autres conseils
Mettre en place IEnumerable
. Voir Utilisation des itérateurs (C # Guide de programmation)
Dans votre cas, vous pouvez simplement utiliser l'itérateur intégré d'un List
ainsi:
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();
}
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow