С# с использованием тернарного оператора. Когда?

Возникли проблемы с использованием тернарного оператора.

...
char symbol = str_base[i];
int count = 1;
...

(count == 1) ? str_rle += symbol : str_rle += count.ToString() + symbol;

Возникает такая ошибка: В качестве оператора можно использовать только выражения присваивания, вызова, увеличения, уменьшения и нового объекта

Почему? Действительно ли тернарный оператор работает только с: вызывающими функциями, ++ и -- ?

Благодарю вас!


person Secret    schedule 06.01.2013    source источник


Ответы (1)


Левая часть вашей строки - это сравнение, а не задание (не уверен, что вы пытаетесь здесь сделать). Я хотел бы, чтобы вы могли использовать тернарные операторы для такого рода условного выполнения, но, к сожалению, вы не можете. Однако в этом случае вы можете использовать тернарный оператор с другой стороны выражения;

str_rle += (count == 1) ? symbol : count.ToString() + symbol;
person Mike    schedule 06.01.2013
comment
Разве тернарный оператор не просто замена блока if-else? потому что if-else работает с чем угодно. - person Secret; 06.01.2013
comment
Нет, тернарный оператор относится к тому же классу операторов, что и +, -, * и т. д., он принимает сравнение как оператор и возвращает один из двух результатов в зависимости от значения сравнения. Таким образом, вы должны присвоить результат чему-то, а не запускать операторы условно, используя его. - person Mike; 06.01.2013