Предположим, что вы используете тернарный оператор или оператор нулевого коалесцирования или вложенные операторы if-else для выбора назначения объекту. Теперь предположим, что в условном выражении вы оцениваете дорогостоящую или неустойчивую операцию, требуя, чтобы вы поместили результат во временную переменную, захватив ее состояние, чтобы ее можно было сравнить, а затем потенциально присвоить.
Как бы язык, например С#, для рассмотрения, реализовать новый логический оператор для обработки этого случая? Должно ли это? Существуют ли существующие способы обработки этого случая в С#? Другие языки?
Некоторые случаи сокращения многословия тройного или нулевого коалесцирующего оператора были преодолены, если предположить, что мы ищем прямые сравнения. См. Уникальные способы использования оператора Null Coalescing, в частности обсуждение того, как можно расширить использование оператора для поддержки String.IsNullOrEmpty(string). Обратите внимание, что Jon Skeet использует PartialComparer из MiscUtil, чтобы переформатировать 0 в null s,
Почему это возможно? Посмотрите, как мы пишем метод сравнения для сложных объектов без каких-либо ярлыков (примеры из приведенных обсуждений):
public static int Compare( Person p1, Person p2 )
{
    return ( (result = Compare( p1.Age, p2.Age )) != 0 ) ? result
        : ( (result = Compare( p1.Name, p2.Name )) != 0 ) ? result
        : Compare( p1.Salary, p2.Salary );
}
Джон Скит пишет новое сравнение, чтобы отменить случай равенства. Это позволяет выразить выражение путем записи нового конкретного метода, который возвращает null, что позволяет нам использовать нулевой оператор коалесцирования:
return PartialComparer.Compare(p1.Age, p2.Age)
    ?? PartialComparer.Compare(p1.Name, p2.Name)
    ?? PartialComparer.Compare(p1.Salary, p2.Salary)
    ?? 0;
Оператор нулевого коалесцирования более читабельен, поскольку имеет две стороны, а не три. Условие boolean condition разделяется на метод, в этом случае возвращающий null, если выражение должно быть продолжено.
Как бы выглядело выражение выше, если бы мы могли легко поставить условие в строку? Возьмите выражение из PartialComparer.Compare, которое возвращает null, и поместите его в новое тернарное выражение, которое позволяет нам использовать оценку левого выражения с неявной временной переменной value:
return Compare( p1.Age, p2.Age ) unless value == 0
     : Compare( p1.Name, p2.Name ) unless value == 0
     : Compare( p1.Salary, p2.Salary );
Основным "потоком" выражения будет:
выражение A, если только boolean B, и в этом случае выражение C
Вместо того, чтобы быть перегруженным оператором сравнения, я полагаю, что это больше похоже на короткозамкнутый инвертированный тернарный оператор.
-  Будет ли этот тип логики полезен? В настоящее время нулевое коалесцирование дает нам способ сделать это с условным выражением 
(value == null). -  Какие еще выражения вы бы хотели протестировать? Мы слышали о 
(String.IsNullOrEmpty(value)). - Каким будет лучший способ выразить это на языке, с точки зрения операторов, ключевых слов?