Возможный дубликат:
Условный оператор не может использовать неявно?
Я столкнулся с особой ситуацией и хочу знать, почему я должен это делать. Я использую .NET 3.5.
Это работает:
short foo;
if (isValid)
foo = -1;
else
foo = getFoo();
Это не работает:
short foo;
foo = isValid ? -1 : getFoo();
Мне нужно typecast -1:
short foo;
foo = isValid ? (short)-1 : getFoo();
Что делает тройное выражение по-разному? Он считает, что -1 - это int, который нужно перевести в короткий. Но почему?