Frage Unterstützt C #, wenn Codeblocks ohne Klammern?


Wie würde C # das kompilieren?

if (info == 8)
    info = 4;
otherStuff();

Würde es nachfolgende Zeilen im Codeblock enthalten?

if (info == 8)
{
    info = 4;
    otherStuff();
}

Oder würde es nur die nächste Zeile nehmen?

if (info == 8)
{
    info = 4;
}
otherStuff();

11
2017-12-03 13:15


Ursprung


Antworten:


Ja, es unterstützt es - aber es dauert das nächste Erklärung, nicht der nächste Linie. Also zum Beispiel:

int a = 0;
int b = 0;
if (someCondition) a = 1; b = 1;
int c = 2;

ist äquivalent zu:

int a = 0;
int b = 0;
if (someCondition)
{
    a = 1;
}
b = 1;
int c = 2;

Persönlich schließe ich immer Klammern um die Körper von ein if Aussagen und die meisten Codierungskonventionen, die ich gefunden habe, verfolgen den gleichen Ansatz.


32
2017-12-03 13:27



if (info == 8)
{
    info = 4;
}
otherStuff();

7
2017-12-03 13:17



Es funktioniert wie C / C ++ und Java. Ohne Curlies enthält es nur die nächste Aussage.


4
2017-12-03 13:17



Ja, es unterstützt, wenn Codeblocks ohne geschweifte Klammern, nur die erste Anweisung nach dem if im if-Block enthalten ist, wie in Ihrem zweiten Beispiel


1
2017-12-03 13:17



Natürlich funktioniert "if" nur für "info = 4".


0
2017-12-03 13:17



Es nimmt nur die nächste Zeile, also würde Ihr Beispiel auf das zweite mögliche Ergebnisbeispiel kompilieren.


0
2017-12-03 13:17



In C #, wenn Anweisungen Befehle basierend auf Klammern ausführen. Wenn keine Klammern angegeben sind, wird der nächste Befehl ausgeführt, wenn die Anweisung wahr ist. Anschließend wird der Befehl ausgeführt. Wenn die Bedingung falsch ist, wird einfach mit dem nächsten Befehl fortgefahren

deshalb

if( true )
    method1();
method2();

wäre das Gleiche wie

if( true )
{
    method1();
}
method2();

0
2017-12-03 14:04