コード例 #1
0
        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);
        }
コード例 #2
0
 public bool Visit <T>(NodeCollection <T> collection) where T : Node
 {
     if (null != collection)
     {
         Visit(collection.ToArray());
         return(true);
     }
     return(false);
 }
コード例 #3
0
        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);
        }