У меня есть две переменные.
int x = 1;
uint y = 2;
Типы должны оставаться int
и uint
. Тем не менее, я не могу выполнять элементарные арифметические действия с ними.
y += x;
Невозможно неявно преобразовать тип «int» в «uint». Существует явное преобразование (вам не хватает приведения?)
То есть я должен делать что-то подобное каждый раз?
if (x < 0)
{
y -= (uint)Math.Abs(x);
}
else
{
y += (uint)x;
}
Меня это смущает из-за опыта работы с C/C++/Java.
Есть ли что-то, что я здесь упускаю?
Почему это поведение отличается от других упомянутых языков?
Есть ли лучшие альтернативы?
Я предполагаю, что это обычная ошибка для новичков в языке.
Нет, я не полагаюсь на недополнение.
y += x
необходимо выполнить преобразование изint
вuint
. Поскольку это преобразование с потерями, компилятор требует, чтобы вы выполнили его явно. - person MarcinJuraszek   schedule 31.03.2016