Поднятые операторы - это операторы, которые работают над обнуляемыми типами, «поднимая» операторов, которые уже существуют в ненулевой форме. Так, например, если вы делаете:
int? x = 10;
int? y = 10;
int? z = x + y;
Этот оператор "+" снят. На самом деле он не существует на Nullable<int>
, но компилятор C # действует так, как будто он это делает, генерируя код для правильных действий. (В большинстве случаев это вопрос проверки, является ли любой операнд нулевым; если это так, результат равен нулю. В противном случае разверните оба операнда до их ненулевых значений, используйте оператор normal, а затем оберните результат обратно Обнуляемое значение. Есть несколько особых случаев, связанных с сравнениями.)
Для получения дополнительной информации см. Раздел 6.4.2 (операторы поднятого преобразования) и 7.3.7 (операторы поднятого) спецификации C # .