示例#1
0
        private static bool DeepEquals(Expression first, Expression second, EqualityExpressionVisitor visitor)
        {
            Contract.Requires((first == null && second == null) || (first != null && second != null));
            Contract.Requires(visitor != null);

            if (first == null)
            {
                return(true);
            }

            visitor.SetOtherRoot(second);
            visitor.Visit(first);

            Contract.Assume(visitor.StackCount == 1);

            return(visitor.AreEqual);
        }
示例#2
0
        public static bool Equals(Expression first, Expression second, EqualityExpressionVisitor visitor)
        {
            Contract.Requires(visitor != null);

            return(visitor.ShallowEquals(first, second) && DeepEquals(first, second, visitor));
        }