16

有没有办法在 C# 中做类似的事情?

IE。

i++ unless i > 5;

这是另一个例子

weatherText = "Weather is good!" unless isWeatherBad
4

4 回答 4

20

您可以使用扩展方法实现类似的目标。例如:

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);
于 2012-04-24T09:20:47.990 回答
12

关于什么 :

if (i<=5) i++;

if (!(i>5)) i++;也可以。


提示:没有unless确切的等价物。

于 2012-04-24T08:57:52.117 回答
0

编辑:这是错误的,因为 Rubyunless不像我的想法那样循环。我回答得太快了。

下面回答错误


与基本关键字和运算符最接近的语法类似于

int x = 0;
do 
{
    x++;
} while (x < 5);
于 2012-04-24T08:58:06.807 回答
0

有'三元运算?:符:

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

(假设红宝石代码意味着我的想法)

于 2012-04-24T08:58:20.090 回答