Можем ли мы ||
внутри тройное состояние?
Да, вы можете. Но так, как вы это сделали, ||
нас между
row["Total Serviceable Offers"].ToString() == "a"
, булевым выражением и "b"
, строковым выражением. Вот почему ваш код не компилируется.
Вы можете изменить его на Contains
или Any
выражение или создать вспомогательный метод, если есть больше сравнений, чем показывает фрагмент кода.
Вот несколько способов, чтобы переписать выражение:
new[]{"a", "b"}.Contains(row["Total Serviceable Offers"].ToString()) ? "0" : "c";
new[]{"a", "b"}.Any(s => s == row["Total Serviceable Offers"].ToString()) ? "0" : "c";
IsAorB(row["Total Serviceable Offers"].ToString()) ? "0" : "c";
...
bool IsAorB(string s) {
return s == "a" || s == "b";
}
Просто не ... Длинная рука версия будет гораздо более удобным для чтения – Liam
Согласовано с @Liam. Как только вы выбрасываете второе условие, вы как бы побеждаете цель использования сокращений для простоты. –
@DangerZone Я почти согласен, я чувствую, что тройка в порядке, если у вас есть два условия, представленные как 'или', но если вы используете 'else', то он теряет свою цель. –