Вопрос по ternary-operator, if-statement, c#, conditional-operator – Полный оператор if / else против условного оператора [дубликат]

2

Возможные дубликаты:
Преимущества использования условного оператора?: (Троичный)
Является ли условный оператор медленным?

Всем привет,

У меня довольно простой вопрос относительно различных операторов if / else.

Помимо написания меньшего количества кода, есть ли другие преимущества использования условного оператора по сравнению с полным оператором if / else?

Есть ли увеличение производительности, меньше скомпилированного кода или что-то еще, что принесет мне пользу при его использовании?

Ценю твою помощь

Marko

Спасибо за показ мне дубликатов, они не появлялись, когда я печатал ответ, и я думаю, что искал все неправильные вещи! Marko
Условный оператор и оператор if компилируются в один и тот же код CIL: инструкция условного перехода. (Перестановка по модулю, потому что один является выражением, а другой - выражением.) Timwi

Ваш Ответ

2   ответа
5

пишу меньше кода ... сосредоточьтесь на коде, в итоге вы становитесь болееудобочитаемый.

Иногдаif Заявление будет более читабельным. Иногда условный оператор будет более читабельным. Мне нравится условный оператор в тех случаях, когда это имеет смысл, с точки зрения различных способов вычисления одного логического значения (например, скидки, основанной на возрасте покупателя). Я не люблю использовать его в запутанных целях - нет ничего плохого в использовании полного if / else там, где это имеет смысл.

Стоит помнить и об операторе слияния нуля ... так что вместо:

string shipTo = customer.ShippingAddress != null 
              ? customer.ShippingAddress : customer.BillingAddress;

ты можешь использовать

string shipTo = customer.ShippingAddress ?? customer.BillingAddress;

Опять же, это полезно только в определенных ситуациях - но в этих случаях это действительно удобно.

Круто - спасибо @Jon. Я все еще жду твою книгу, без сомнения, у меня будет больше вопросов после того, как я прочитал это! Спасибо! Marko
@Marko: быстрое примечание педантизма,название оператора является условным оператором. Это троичный оператор, потому что он имеет три операнда, но это просто свойство оператора, а не его описание. Jon Skeet
Спасибо - это все, что мне нужно было знать. Я читал некоторый код и обнаружил, что некоторые разработчики чрезмерно усложняют код, используя тернарный оператор в тех местах, где их, вероятно, не должно быть. Примут через 8 минут! Marko
1

есть ли другие преимущества использования тернарного оператора по сравнению с полным оператором if / else?

Лучшая читаемость, в некоторых случаях ... Я думаю, это все.

Есть ли повышение производительности, меньше скомпилированного кода или что-нибудь еще, что могло бы принести мне пользу при его использовании?

Нет, ничего существенного. Я думаю, что он обычно компилируется в тот же IL в любом случае ...

Поэтому в конечном итоге вы должны основывать свой выбор только на удобочитаемости. Когда удобнее написать полный if / else, сделайте это. Если это очень простое троичное выражение, которое легко читать, сделайте это.

Отлично спасибо! Marko

Похожие вопросы