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(); },

Вы должны использовать все, что вы считаете наиболее чистым или легким для чтения.

Другие вопросы по тегам