有什麼辦法可以在C#中做類似的事情嗎?類似Ruby的'除非'用於C#嗎?
即。
i++ unless i > 5;
這裏是另一個例子
weatherText = "Weather is good!" unless isWeatherBad
有什麼辦法可以在C#中做類似的事情嗎?類似Ruby的'除非'用於C#嗎?
即。
i++ unless i > 5;
這裏是另一個例子
weatherText = "Weather is good!" unless isWeatherBad
什麼:
if (i<=5) i++;
if (!(i>5)) i++;
將工作太。
提示:沒有unless
完全等效。
編輯:這是錯誤的,因爲Ruby unless
不像我的想法循環。我回答得太快了。
錯誤答案下面
最接近syntactiaclly到與底座關鍵字和運營商將像
int x = 0;
do
{
x++;
} while (x < 5);
所以這個想法是。 [做些什麼]除非[條件] 你可以認爲它是一個顛倒如果 – Konstantinos 2012-04-24 09:00:51
[是的,它是'if',但它不是一個循環](http://en.wikibooks.org/ wiki/Ruby_Programming/Syntax/Control_Structures#unless_expression) – Reniuz 2012-04-24 09:05:44
@Konstantinos:您需要查看其他答案,這是錯誤的,因爲我誤解了ruby語法 – xan 2012-04-24 09:05:55
有」三元?:
- 運算符:
i = i > 5 ? i : i + 1
//if i>5 then i, else i++
(假設紅寶石代碼意味着我的想法)
好的,如果'除非'是一個循環,那麼這是一個完全不同的東西......我應該提到,我不會說紅寶石。 – phg 2012-04-24 08:59:58
[沒有它的不循環](http://www.tutorialspoint.com/ruby/ruby_if_else.htm) – Reniuz 2012-04-24 09:01:26
這是可怕的代碼,它也不起作用。你的代碼是一個複雜的無操作。 – CodesInChaos 2012-04-24 09:09:29
你可以通過擴展方法實現這樣的功能。 例如:
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);
有趣的方法 – Konstantinos 2012-04-24 10:32:20
擴展程序總是保存一天。 – 2016-09-12 22:20:18
沒有。有'if'和'?:',但都不是這樣的。 – CodesInChaos 2012-04-24 08:56:41
我覺得想出一個增量是一個不好的例子,如果它有幫助,會增加一個。 – Konstantinos 2012-04-24 09:07:13