public bool Visit <T>(NodeCollection <T> collection) where T : Node { if (null == collection) { return(false); } int removed = 0; T[] nodes = collection.ToArray(); for (int i = 0; i < nodes.Length; ++i) { T currentNode = nodes[i]; T resultingNode = (T)VisitNode(currentNode); if (currentNode != resultingNode) { int actualIndex = i - removed; if (null == resultingNode) { ++removed; collection.RemoveAt(actualIndex); } else { collection.ReplaceAt(actualIndex, resultingNode); } } } return(true); }
public bool Visit <T>(NodeCollection <T> collection) where T : Node { if (null != collection) { Visit(collection.ToArray()); return(true); } return(false); }
public bool Visit <T>(NodeCollection <T> collection) where T : Node { if (null == collection) { return(false); } T[] nodes = collection.ToArray(); foreach (T currentNode in nodes) { T resultingNode = (T)VisitNode(currentNode); if (currentNode != resultingNode) { collection.Replace(currentNode, resultingNode); } } return(true); }