J'utilise un HashSet. Je veux m'assurer que je n'ai pas de valeurs en double. Cependant, je suis capable de le faire en ce moment.Utilisation de IEqualityComparer <T> pour déterminer l'unicité
[Serializable()]
public class SafetyObsDS
{
public int Count
{
get { return set.Count; }
}
HashSet<CompResults> set;
public SafetyObsDS()
{
set = new HashSet<CompResults>(new CompareToComparer());
}
public bool Add(CompResults cr)
{
set.Remove(cr);
return set.Add(cr);
}
public bool Remove(CompResults cr)
{
return set.Remove(cr);
}
[Serializable()]
private class CompareToComparer : IEqualityComparer<CompResults>
{
public CompareToComparer() {}
public bool Equals(CompResults cr1, CompResults cr2)
{
return (cr1.CompareTo(cr2) == 0);
}
public int GetHashCode(CompResults cr)
{
return (cr.SectionID);
}
}
}
[Serializable()]
public class CompResults : IComparable
{
public int SectionID { get; set; }
public ComResults(int sectID)
{
SectionID = sectID;
}
public int CompareTo(object obj)
{
return SectionID - (obj as CompResults).SectionID;
}
}
Je reste des constructeurs et des codes supplémentaires inutiles tels que d'autres domaines sur Lorsque j'effectue les opérations suivantes, je reçois des résultats non désirés:
Add(new CompResults(1)); Result: true Add(new CompResults(1)); Result: true <--- this is a dup and I don't want it to add Remove(new CompResults(1)); Result: true
Merci pour votre aide à l'avance!