Что такое снятые операторы?

Я смотрел на эту статью и изо всех сил пытаюсь последовать примеру VB.NET, который объясняет снятые операторы. Кажется, нет эквивалентного примера C# или учебного руководства. У меня нет большого опыта с оператором, перегружающимся в целом, таким образом пытаясь достигнуть соглашения с VB.NET, эквивалентным, пока чтение на nullable типах, вероятно, не является лучшим местом для запуска...

Кто-либо смог бы дать объяснение снятых операторов и как они используются nullable типами? Это просто означает, что nullable тип самостоятельно не перегружает операторы и будет использовать операторы от базового типа, который это представляет?

Кажется, нет большой информации о ТАК о снятых операторах, таким образом, надо надеяться, это может выручить некоторых других также.

56
задан johnnyRose 9 April 2018 в 19:32
поделиться

1 ответ

Поднятые операторы - это операторы, которые работают с типами, допускающими значение NULL, путем «подъема» операторов, которые уже существуют в форме, не допускающей значения NULL. Так, например, если вы это сделаете:

int? x = 10;
int? y = 10;
int? z = x + y;

Этот оператор "+" отменен. На самом деле его не существует на Nullable , но компилятор C # действует так, как если бы он существовал, генерируя код для правильных действий. (В большинстве случаев это вопрос проверки того, является ли какой-либо из операндов нулевым; если да, то результат будет нулевым. В противном случае разверните оба операнда в их значения, не допускающие значения NULL, используйте обычный оператор, а затем заверните результат обратно в значение, допускающее значение NULL. Однако существует несколько особых случаев сравнений.)

Для получения дополнительной информации см. разделы 6.4.2 (повышенные операторы преобразования) и 7.3.7 (повышенные операторы) спецификации C # .

110
ответ дан 26 November 2019 в 17:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: