C# - la définition hashset avec clé personnalisée

Je suis en utilisant le HashSet et Dictionary en C# pour mettre en œuvre une structure Graphique. J'ai un problème avec l'unicité de HashSet éléments lors de la HashSet clé est une mesure de la classe. Ici, j'ai:

public class Point
{
    public int x { get; set; }
    public int y { get; set; }
}

public class Vertex
{
    public Vertex(Point point)
    {
        VertexLabel = point;
    }

    public Point VertexLabel { get; private set; }
}

public class Edge
{
    public Edge(Vertex to, Vertex from, double weight)
    {
        FromVertex = from;
        ToVertex = to;
        Weight = weight;
    }

    public Vertex FromVertex { get; private set; }
    public Vertex ToVertex { get; private set; }
    public double Weight { get; private set; }
}

public class Graph
{
    public Graph()
    {
        _Vertexes = new HashSet<Vertex>();
        _VertexEdgeMapping = new Dictionary<Vertex, LinkedList<Edge>>();
    }
    private HashSet<Vertex> _Vertexes;
    private Dictionary<Vertex, LinkedList<Edge>> _VertexEdgeMapping;
}

Le problème est que lorsque j'ai même des sommets et je veux les ajouter à la graphique, ils se dupliqué. comment puis-je définir d'une manière que le HashSet serait de comprendre la singularité de mon sommets?

Par définition, une table de hachage sera toujours le même si la même valeur est transmis en entrée. Si vous avez deux sommets avec exactement la même valeur, ils auront exactement le même hash. Êtes-vous sûr que vous voulez utiliser un HashSet? EDIT: en deuxième lecture, il semble que vous voulez éviter de dupliquer les sommets qui sont les mêmes. Dans l'affirmative, si elles ont les mêmes points de début et fin, alors il y a peut être une autre variable qui est différent. Avez-vous essayé d'utiliser quelque chose comme un n-uplet de la commande des paires représentant le Sommet de début et de fin des points?
Ce n'est pas correct. Veuillez créé deux Vertex objets avec la même valeur de point et de comparer GetHashCode.

OriginalL'auteur Mahsa Teimourikia | 2013-08-06