Вопрос

Учитывая время оценки, являются ли следующие два эквивалента?

if(condition1)
{
    //code1
}
else
{
    //code2
}

condition1 ? code1 : code2

Или они просто синтаксически разные?

Это было полезно?

Решение

Разница в том, что последнюю станцию ​​можно использовать для вернуть значение на основе состояния.

Например, если у вас есть следующее утверждение:

if (SomeCondition())
{
    text = "Yes";
}
else
{
    text = "No";
}

Используя тернарный оператор, вы напишете:

text = SomeCondition() ? "Yes" : "No";

Обратите внимание, как первый пример выполняет оператор в зависимости от условия, а второй возвращает значение на основе состояния.

Другие советы

Хорошо ...В первом случае вы можете использовать любое количество или тип (выражение или оператор) кода вместо code1 и code2.В последнем случае они должны быть допустимыми выражениями.

Да и Да.

Единственная выгода — сохранить строки кода.

Да, это две разные синтаксические формы, и они будут работать одинаково, и, скорее всего, компилятор выдаст идентичный код.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top