Вопрос обоснованный, и я бы не стал считать это изменение синтаксическим сахаром. Если сравниваемое значение является результатом вычислений, было бы лучше сказать:
if (someComplicatedExpression ?== 1 : 2 : 3 : 5)
, чем сказать
int temp; temp = someComplicatedExpression; if (temp == 1 || temp == 2 || temp == 3 || temp == 5)
, особенно если не было никакой другой необходимости для временной переменной обсуждаемый. Современный компилятор мог бы, вероятно, распознать короткое полезное время жизни «temp» и оптимизировать его для регистра, и, вероятно, мог бы распознать шаблон «посмотрим, является ли переменная одной из определенных констант», но не было бы вреда, если бы программист сохранить компилятор проблемы. Указанный синтаксис не будет компилироваться на любом существующем компиляторе, но я не думаю, что он будет более двусмысленным, чем (a + b >> c + d), чье поведение определено в спецификации языка.
Что касается того, почему никто этого не сделал, я не знаю.
Microsoft CCR содержит многое из того, что вам нужно.
Здесь приведены несколько примеров кода и примечания по использованию.
Марк Гравелл написал хороший пример блокировки очереди в этот ответ .