if (true) Сокращение
Есть ли сокращение при проверке логического значения на true?
Пример:
if (autoConnect) Connect();
Мы можем
return IsOpen() ? true : false;
Но я не могу получить
autoConnect ? Connect();
Бег. Есть ли способ сделать это?
5 ответов
Вы можете написать метод расширения:
public static void _(this bool b, Action ifTrue)
{
if (b) { ifTrue(); }
}
тогда вы могли бы написать:
autoConnect._(Connect);
хотя очевидно, что это не очень читабельно и не рекомендуется.
Единственное, что вы можете сократить, это удалить условный оператор:
return IsOpen() ? true : false;
и просто
return IsOpen();
Чтобы ответить на ваш вопрос, нет, нет стенографии, чтобы сделать
if (autoConnect) Connect();
короче. Кроме того, ваше предлагаемое решение экономит только 3 символа, что является ненужным игрой в отлично читаемый код.
Нет, нет возможности получить autoConnect ? Connect();
за работой.
просто верните значение bool, вам не нужен троичный оператор:
return IsOpen();
В качестве альтернативы вы возвращаете некоторые значения, когда значение, которое вы хотите проверить, может быть нулевым, используя ??
оператор, для образца:
return a ?? b;
Если a
равно нулю, затем вернитесь b
,
Как говорит Сириде if (autoConnect) Connect();
это самый короткий путь. Хотя это просто во время написания кода. Всякий раз, когда компилятор компилирует код, он становится таким же, как при использовании if (autoConnect) { Connect(); }
или же if (autoConnect == true) { Connect(); }
,
Вы должны использовать все, что вы считаете наиболее чистым или легким для чтения.