Есть ли способ сообщить компилятору .NET, что переменная не равна нулю?C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Есть ли способ сообщить компилятору .NET, что переменная не равна нулю?

Сообщение Anonymous »

Если у меня есть следующий метод
public int Add(int? a, int? b) {
a ??= 0;
b ??= 0;
return a + b;
}

Последняя строка выдаст ошибку: «Невозможно неявно преобразовать тип 'int?» в 'int'"
Я могу это исправить, добавив явное приведение ((int)(a + b)) или путем объединения каждого операнда по нулю ((a ?? 0) + (b ?? 0))..
Мой вопрос: есть ли какой-нибудь способ сообщить компилятору, что, поскольку мы уже объединили каждую переменную в 0, их можно рассматривать как int s вместо int?s?
В TypeScript есть пример функциональности, о которой я спрашиваю. В TS следующий код работает, потому что к моменту, когда мы добираемся до последней строки, компилятор знает, что a и b являются числовыми типами, а не числовыми | не определено.
const add = (a?: number, b?: number): number => {
// At this point, a and b are both number | undefined
a ??= 0; // a is now number
b ??= 0; // b is now number
return a + b; // a + b returns number, not number | undefined
}


Подробнее здесь: https://stackoverflow.com/questions/787 ... s-not-null
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как сообщить компилятору, что аргумент функции никогда не будет равен нулю?
    Anonymous » » в форуме C++
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous
  • Как сообщить компилятору, что аргумент функции никогда не будет равен нулю?
    Anonymous » » в форуме C++
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • Как сообщить компилятору, что аргумент функции никогда не будет равен нулю?
    Anonymous » » в форуме C++
    0 Ответы
    22 Просмотры
    Последнее сообщение Anonymous
  • В списке событийBox1_SelectedIndexChanged почему переменная внутри равна нулю?
    Гость » » в форуме C#
    0 Ответы
    48 Просмотры
    Последнее сообщение Гость
  • Статическая переменная равна нулю – Objective-C
    Гость » » в форуме IOS
    0 Ответы
    44 Просмотры
    Последнее сообщение Гость

Вернуться в «C#»