Métodos de adição System.Linq.Expressions.Expression.Add

Observação

Este artigo fornece observações complementares à documentação de referência para esta API.

O método Add retorna um BinaryExpression que tem a propriedade Method definida no método que a implementa. A Type propriedade é definida como o tipo do nó. Se o nó for levantado, ambas as propriedades IsLifted e IsLiftedToNull são true. Caso contrário, são false. A propriedade Conversion é null.

As informações a seguir descrevem o método de implementação, o tipo de nó e se um nó é levantado.

Método de execução

As regras a seguir determinam o método de implementação selecionado para a operação:

  • Se a propriedade de um dos tipos representados por Type ou left for definida pelo usuário e sobrecarregar o operador de adição, right que representa esse método será o método responsável pela implementação.
  • Caso contrário, se left. Tipo e right. Tipo são tipos numéricos, o método de implementação é null.

Tipo de nó e tipos elevados versus tipos não elevados

Se o método de execução não for null:

  • Se left. Tipo e right. Tipo são atribuíveis aos tipos de argumento correspondentes do método de implementação, o nó não é levantado. O tipo do nó é o tipo de retorno do método de implementação.

  • Se as duas condições a seguir forem satisfeitas, o nó é levantado e o tipo do nó é o tipo anulável que corresponde ao tipo de retorno do método de implementação:

    • left. Tipo e right. Tipo são ambos os tipos de valor dos quais pelo menos um é anulável e os tipos não anuláveis correspondentes são iguais aos tipos de argumento correspondentes do método de implementação.
    • O tipo de retorno do método de implementação é um tipo de valor não anulável.

Se o método de execução for null:

  • Se left. Tipo e right. Tipo são ambos não-anuláveis, o nó não é levantado. O tipo do nó é o tipo de resultado do operador de adição predefinido.
  • Se left. Tipo e right. Tipo são ambos anuláveis, o nó é levantado. O tipo do nó é o tipo anulável que corresponde ao tipo de resultado do operador de adição predefinido.