2016-06-09 7 views
4

Есть сокращенная для этого:Есть ли сокращение для меньше, чем И больше, чем в C#?

bool b = (x > 0) && (x < 5); 

Что-то вроде:

bool b = 0 < x < 5; 

В C#?

+4

Нету; вам просто нужно будет сделать bool b = 0

+0

Будет ли писать метод расширения? –

+0

@Robben_Ford_Fan_boy Использование метода расширения добавит более 4 символов на сайт вызова (а добавление «&&» добавляет только 4 символа). –

ответ

6

Nope. Но вы можете удалить скобки:

bool b = 0 < x && x < 5 

или играть с математикой:

bool b = x*x < 5*x 
+2

Плюс один: мне нравится второй. Но он может переполнить тип (или обернуть вокруг интегральных типов, что было бы катастрофой), поэтому мы оба знаем, что первый из них является единственным реальным * возможным выбором. – Bathsheba

+2

Конечно, я написал это просто для удовольствия. Я всегда использую первый подход – omikad

+0

@Bathsheba. Я удалил свой комментарий (потому что я принял второй вариант для серьезного предложения), но то, что я сказал, было скобкой, делает его более ясным. Это правда, я знаю, как работает приоритет оператора, а скобки все еще просто делают его лучше читаемым на странице. –

0

Раствор LINQ, не короче, но более читабельный:

bool b = new[] { 1, 2, 3, 4 }.Contains(x); 
+0

Это работает для примера в сообщении OP, но вопрос в том, что ** общая ** сокращенная запись для «Меньше, чем и больше». Как бы вы обрабатывали 'bool b = (x> 212) && (x <45872);'? –

+0

@LarsKristensen - тогда вы можете использовать что-то вроде 'Enumerable.Range (212 + 1, 45872-212-1)' –

+1

Да, но тогда это не сокращенная версия. –