Подтвердить что ты не робот

Ruby-like "если" для С#?

Есть ли способ сделать что-то подобное в С#?

т.

i++ unless i > 5;

вот еще один пример

weatherText = "Weather is good!" unless isWeatherBad
4b9b3361

Ответ 1

Как насчет:

if (i<=5) i++;

if (!(i>5)) i++; тоже будет работать.


Подсказка: Точный эквивалент unless.

Ответ 2

Вы можете добиться чего-то подобного с помощью методов расширения. Например:

public static class RubyExt
{
    public static void Unless(this Action action, bool condition)
    {
        if (!condition)
            action.Invoke();
    }
}

а затем используйте его как

int i = 4;
new Action(() => i++).Unless(i < 5);
Console.WriteLine(i); // will produce 4

new Action(() => i++).Unless(i < 1);
Console.WriteLine(i); // will produce 5

var isWeatherBad = false;
var weatherText = "Weather is nice";
new Action(() => weatherText = "Weather is good!").Unless(isWeatherBad);
Console.WriteLine(weatherText);

Ответ 3

EDIT: это неправильно, поскольку Ruby unless НЕ работает как моя идея. Я ответил слишком быстро.

Неверный ответ ниже


Ближайшим синтаксическим отношением к базовым ключевым словам и операторам будет что-то вроде

int x = 0;
do 
{
    x++;
} while (x < 5);

Ответ 4

Существует тройной ?: -оператор:

i = i > 5 ? i : i + 1
//if i>5 then i, else i++

(Предполагая, что код ruby ​​означает, что я думаю)