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