2016-04-26 12 views
0

Ich habe mich gefragt, ob es eine Möglichkeit gibt, return in einer Methode zu verwenden, die nur ausgeführt wird, wenn eine Bedingung wahr ist, aber keine if Anweisung verwendet. Wenn die Bedingung falsch ist, wird nichts zurückgegeben.Rückgabe nur, wenn die Bedingung wahr ist (ohne if zu verwenden)

Zum besseren Verständnis:

public bool MyMethod() 
{ 
    if (HasErrors()) 
     return HasErrors(); 

    // Some more code 
} 

Some more code würde dann wieder auch etwas. Ich jetzt dachte an etwas wie folgt aus:

public bool MyMethod() 
{ 
    return HasErrorsButReturnsOnlyIfTrue(); 

    // Some more code 
} 

Aber return HasErrorsButReturnsOnlyIfTrue(); hat nur dann, wenn HasErrors() true zurück ausgeführt werden. Sonst würde es übersprungen werden.

Gibt es eine Möglichkeit, etwas zu erreichen, ohne if zu verwenden?

+4

Ohne 'if'? Nein. Ohne die Methode zweimal aufzurufen? Ja: 'if (hasErrors()) gibt true zurück;' –

+0

@Dennis_E 'return hasErrors()'. Warum würdest du 'wenn (wahr) wahr 'zurückgeben? –

+0

@GuillaumeBeauvois Er will nicht zurückkehren, wenn es falsch ist. –

Antwort

3

Dies könnte der nächste sein Sie erhalten:

public bool MyMethod() 
{ 
    return HasErrors() 
     ? true 
     : SomeMoreCode(); 
} 

Beachten Sie, dass dies bedeutet, dass Sie Ihre ‚Some More-Code‘ setzen müssen werden in einem separaten Verfahren, und das Verfahren muss nun auch eine Rückkehr boolesch.

+4

Oder noch kürzer: 'return HasErrors() || SomeMoreCode(); ' –

+0

Dies löst nicht:' gibt nur einen Wert zurück, wenn eine Bedingung wahr ist ', aber das ist möglicherweise nicht das, was OP wirklich wollte. –

0

Haftungsausschluss: Dies ist nur ein Witz.

public bool MyMethod() 
{ 
    try 
    { 
     return HasErrorsButReturnsOnlyIfTrue(); 
    } 
    catch 
    { 
     // Some more code 
     Console.WriteLine("Test"); 
     return false; 
    } 
} 

public bool HasErrorsButReturnsOnlyIfTrue() 
{ 
    if (some condition) 
     return true; 
    else 
     throw new Exception(); 
} 
+0

Ha Ha Ha: D: D :) – SamGhatak

Verwandte Themen