if/else против тернарного оператора
Вопрос
Учитывая время оценки, являются ли следующие два эквивалента?
if(condition1)
{
//code1
}
else
{
//code2
}
condition1 ? code1 : code2
Или они просто синтаксически разные?
Решение
Разница в том, что последнюю станцию можно использовать для вернуть значение на основе состояния.
Например, если у вас есть следующее утверждение:
if (SomeCondition())
{
text = "Yes";
}
else
{
text = "No";
}
Используя тернарный оператор, вы напишете:
text = SomeCondition() ? "Yes" : "No";
Обратите внимание, как первый пример выполняет оператор в зависимости от условия, а второй возвращает значение на основе состояния.
Другие советы
Хорошо ...В первом случае вы можете использовать любое количество или тип (выражение или оператор) кода вместо code1
и code2
.В последнем случае они должны быть допустимыми выражениями.
Да и Да.
Единственная выгода — сохранить строки кода.
Да, это две разные синтаксические формы, и они будут работать одинаково, и, скорее всего, компилятор выдаст идентичный код.