При использовании cond ? exp1 : exp2
exp1
и exp2
должны иметь один и тот же тип.
Тернарное выражение не подходит в вашем случае, потому что Console.WriteLine
возвращает void, но выражение присваивания является int
.
Используйте вместо него традиционный if-else .
Чтобы исправить,
// ERROR: This doesn't compile
int.TryParse(num, out _) ? this.playerGuess=Convert.ToInt16(num) : Console.WriteLine("ar you sure it is a number !!?") ;
должно стать
if (int.TryParse(num, out _)) {
this.playerGuess = Convert.ToInt16(num)
} else {
Console.WriteLine("ar you sure it is a number !!?");
}
Бонусный совет:
Вероятно, вы действительно хотите это:
if (int.TryParse(num, out int val)) {
this.playerGuess = val;
} else {
Console.WriteLine("Are you sure it is a number?");
}