Если у меня есть следующий метод
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
Есть ли способ сообщить компилятору .NET, что переменная не равна нулю? ⇐ C#
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как сообщить компилятору, что аргумент функции никогда не будет равен нулю?
Anonymous » » в форуме C++ - 0 Ответы
- 13 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Как сообщить компилятору, что аргумент функции никогда не будет равен нулю?
Anonymous » » в форуме C++ - 0 Ответы
- 10 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Как сообщить компилятору, что аргумент функции никогда не будет равен нулю?
Anonymous » » в форуме C++ - 0 Ответы
- 22 Просмотры
-
Последнее сообщение Anonymous
-
-
-
В списке событийBox1_SelectedIndexChanged почему переменная внутри равна нулю?
Гость » » в форуме C# - 0 Ответы
- 48 Просмотры
-
Последнее сообщение Гость
-