2012-04-24 41 views
13

Có cách nào để làm điều gì đó tương tự trong C# không?Giống như Ruby 'trừ' đối với C#?

tức là.

i++ unless i > 5; 

đây là một ví dụ

weatherText = "Weather is good!" unless isWeatherBad 
+0

không. Có 'if' và'?: ', Nhưng không hoạt động như thế này. – CodesInChaos

+0

Tôi nghĩ rằng sắp tới với một gia số là một ví dụ xấu, sẽ thêm một ví dụ khác trong trường hợp nó giúp. – Konstantinos

Trả lời

11

gì về:

if (i<=5) i++; 

if (!(i>5)) i++; sẽ làm việc quá.


Gợi ý: Không có unless chính xác tương đương.

0

CHỈNH SỬA: Điều này sai vì Ruby unless KHÔNG lặp như ý tưởng của tôi. Tôi trả lời quá nhanh.

câu trả lời sai dưới


Các syntactiaclly gần đó với các từ khóa cơ bản và các nhà khai thác sẽ là một cái gì đó giống như

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

vì vậy ý ​​tưởng sẽ là. [làm điều gì đó] trừ khi [điều kiện] bạn có thể nghĩ rằng nó bị đảo ngược nếu – Konstantinos

+1

[có, nó là đối diện 'if', nhưng nó không phải là một vòng lặp] (http://en.wikibooks.org/ wiki/Ruby_Programming/Syntax/Control_Structures # except_expression) – Reniuz

+0

@Konstantinos: bạn cần xem lại các câu trả lời khác, điều này là sai vì tôi đã hiểu nhầm cú pháp ruby ​​ – xan

0

Có' các ternary ?: -operator:

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

(Giả sử mã ruby ​​có nghĩa là những gì tôi nghĩ)

+0

OK, nếu 'trừ' là một vòng lặp thì đó là một điều hoàn toàn khác ... Tôi nên đề cập đến rằng tôi không nói ruby. – phg

+0

[không có vòng lặp của nó] (http://www.tutorialspoint.com/ruby/ruby_if_else.htm) – Reniuz

+0

Đây là mã khủng khiếp, và nó cũng không hoạt động chút nào. Mã của bạn không phức tạp. – CodesInChaos

21

Bạn có thể đạt được một cái gì đó như thế này với các phương pháp mở rộng. Ví dụ:

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

và sau đó sử dụng nó như

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); 
+1

Cách tiếp cận thú vị – Konstantinos

+0

Tiện ích mở rộng luôn luôn lưu ngày. –

Các vấn đề liên quan