1

From: 方法: 式ツリーを変更する (C# および Visual Basic)

http://msdn.microsoft.com/en-us/library/bb546136.aspx

protected override Expression VisitBinary(BinaryExpression b)
    {
        if (b.NodeType == ExpressionType.AndAlso)
        {
            Expression left = this.Visit(b.Left);
            Expression right = this.Visit(b.Right);

            // Make this binary expression an OrElse operation instead of an AndAlso operation. 
            return Expression.MakeBinary(ExpressionType.OrElse, left, right, b.IsLiftedToNull, b.Method);
        }

        return base.VisitBinary(b);
    }

このメソッドの目的とその動作について間違っている場合は修正してください。ありがとうございました。

既存の experssion がある場合、Expresstion Visitor はすべての BinaryExpression をこのメソッドに送信するため、私の理解では、この 2 行は無駄です。

Expression left = this.Visit(b.Left);
Expression right = this.Visit(b.Right);

これらの 2 つの行は同じことを行うため、このメソッドに送信されるすべての BinaryExpression に対して責任があります。私は正しいですか?

Expression.MakeBinary の目的は、BinaryExpression を新しいものに更新することです。では、なぜこの方法を使用しないのですか: b.Update??

最後に、このメソッドは、この式のすべての AndAlso を OrElse に置き換えますか?

よろしくお願いいたします。

4

0 に答える 0