Методы System.Linq.Expressions.Expression.Add

В этой статье приводятся дополнительные замечания к справочной документации по этому API.

Метод Add возвращает BinaryExpression свойство, Method заданное для метода реализации. Свойство Type имеет тип узла. Если узел снят, IsLifted оба IsLiftedToNull свойства являются обоими true. В противном случае они .false Значение свойства Conversionnull.

Ниже приведены сведения о методе реализации, типе узла и о том, будет ли снят узел.

Реализация метода

Следующие правила определяют выбранный метод реализации для операции:

  • Type Если свойство любого left или right представляет определяемый пользователем тип, который перегружает оператор сложения, MethodInfo это метод реализации.
  • В противном случае , если left. Тип и right. Тип — числовые типы, реализуется nullметод.

Тип узла и снятый и не снятый

Если метод реализации не nullимеет значение :

  • If left. Тип и right. Тип можно назначить соответствующим типам аргументов метода реализации, узел не поднимается. Тип узла — это возвращаемый тип метода реализации.

  • Если выполнены следующие два условия, узел поднимается, а тип узла — это тип, допускающий значение NULL, соответствующий возвращаемому типу метода реализации:

    • left. Тип и right. Тип — это оба типа значений, для которых по крайней мере один имеет значение NULL, и соответствующие типы, не допускающие значения NULL, равны соответствующим типам аргументов метода реализации.
    • Возвращаемый тип метода реализации — это ненулевой тип значения.

Если метод реализации имеет значение null:

  • If left. Тип и right. Тип не допускает значение NULL, узел не поднимается. Тип узла — это тип результата предопределенного оператора добавления.
  • If left. Тип и right. Тип имеет значение NULL, узел поднимается. Тип узла — это тип, допускающий значение NULL, соответствующий типу результата предопределенного оператора добавления.