2012-03-31 12 views
-2

Ich hatte dies aus Versehen versucht, was kompiliert! So wurde ich gefragt, was könnte dies bedeuten, möglicherweise .. google half nicht ..Was bedeutet> + und> - in C#

if (3 >+ 4) 
    dothis() //this is never hit btw.. 

if (3 >- 4) 
    dothis() //this is hit. 

Sowohl der Code btw kompilieren ..

+12

Denken Sie darüber nach. – leppie

+0

ja zu Recht kommentiert von leppie –

+3

Hit 'Strg + K'' Strg + D' – CodesInChaos

Antwort

10

Es analysiert, wie

3 > +4 

und

3 > -4 

So in die unary + und unary - Betreiber.

Wenn Sie eine interessante Art und Weise wollen, dies zu erforschen, schreiben

Expression<Func<int, int, bool>> func = (x, y) => x >+ y; 

und dann den resultierenden Ausdrucksbaum func im Debugger erkunden. Sie sehen den unären Operator im Baum.

+0

Oh danke dafür .. – nawfal

2

Ist 3 größer als 4?

Ist 3 größer als -4?

Wenn Sie jemals in Zweifeln sind, was etwas tut, schreiben Sie einen kleinen Test-App:

int i = +3; 
    int j = -4; 

    Console.WriteLine(i); 
    Console.WriteLine(j); 

    Console.WriteLine((3 > +4)); 
    Console.WriteLine((3 > -4)); 
2

Versuchen Sie, ein Semikolon nach DoThis setzen() wie

dothis(); 

beobachten Und was passiert dann an den + und - Operator. Sie werden von mehr oder weniger verschoben werden entfernt als seufzen und bewegt näher 4.

if (3 > +4) 
    dothis() //this is never hit btw.. 
      //will never hit in the entire universe 

if (3 > -4) 
    dothis() //this is hit 
      //will always be a hit 

Zuerst wird, wenn 3> 4 (Positive 4), die immer in falschen führen.

Die zweite wird, wenn 3> -4 (Negativ 4), was immer zu True führt.