Есть сокращенная для этого:Есть ли сокращение для меньше, чем И больше, чем в C#?
bool b = (x > 0) && (x < 5);
Что-то вроде:
bool b = 0 < x < 5;
В C#?
Есть сокращенная для этого:Есть ли сокращение для меньше, чем И больше, чем в C#?
bool b = (x > 0) && (x < 5);
Что-то вроде:
bool b = 0 < x < 5;
В C#?
Nope. Но вы можете удалить скобки:
bool b = 0 < x && x < 5
или играть с математикой:
bool b = x*x < 5*x
Плюс один: мне нравится второй. Но он может переполнить тип (или обернуть вокруг интегральных типов, что было бы катастрофой), поэтому мы оба знаем, что первый из них является единственным реальным * возможным выбором. – Bathsheba
Конечно, я написал это просто для удовольствия. Я всегда использую первый подход – omikad
@Bathsheba. Я удалил свой комментарий (потому что я принял второй вариант для серьезного предложения), но то, что я сказал, было скобкой, делает его более ясным. Это правда, я знаю, как работает приоритет оператора, а скобки все еще просто делают его лучше читаемым на странице. –
Раствор LINQ, не короче, но более читабельный:
bool b = new[] { 1, 2, 3, 4 }.Contains(x);
Это работает для примера в сообщении OP, но вопрос в том, что ** общая ** сокращенная запись для «Меньше, чем и больше». Как бы вы обрабатывали 'bool b = (x> 212) && (x <45872);'? –
@LarsKristensen - тогда вы можете использовать что-то вроде 'Enumerable.Range (212 + 1, 45872-212-1)' –
Да, но тогда это не сокращенная версия. –
Нету; вам просто нужно будет сделать bool b = 0
Будет ли писать метод расширения? –
@Robben_Ford_Fan_boy Использование метода расширения добавит более 4 символов на сайт вызова (а добавление «&&» добавляет только 4 символа). –