/// <inheritdoc /> public void Clear() { IVertexEdgeDictionary <TVertex, TEdge> vertexEdges = _vertexEdges; _vertexEdges = new VertexEdgeDictionary <TVertex, TEdge>(); EdgeCount = 0; NotifyEdgesRemoved(vertexEdges.SelectMany(edges => edges.Value).Distinct()); NotifyVerticesRemoved(vertexEdges.Keys); vertexEdges.Clear(); }
/// <inheritdoc /> public void Clear() { if (EdgeRemoved != null) // Lazily notify { foreach (TEdge edge in _vertexEdges.SelectMany(edges => edges.Value).Distinct()) { OnEdgeRemoved(edge); } foreach (TVertex vertex in _vertexEdges.Keys) { OnVertexRemoved(vertex); } } _vertexEdges.Clear(); EdgeCount = 0; }