2010-07-14 10 views
7

Haben wir einen Operator in C#, mit dem ich die Kurzschlussauswertung vermeiden und alle Bedingungen überbrücken kann?So vermeiden Sie die Kurzschlussauswertung in C# bei gleicher Funktionalität

sagen

if(txtName.Text.xyz() || txtLastName.Text.xyz()) 
{ 

} 

public static bool xyz(this TextBox txt) 
{ 
//do some work. 
return false; 
} 

Es alle Bedingungen unabhängig erhaltenen Ausgangs bewerten sollte. Und nach dem Bewerten der letzten Bedingung wird entsprechend dem erhaltenen Ergebnis fortgefahren. ?

+0

Warum möchten Sie die gleiche Bedingung zweimal auswerten? –

+0

@Adrian: Nehmen Sie es als Beispiel. XYZ-Funktion kann jede Art von Definition enthalten, kann ein Delegat oder etwas anderes sein. –

Antwort

13

Verwenden Sie einfach einen einzigen Balken, dies bewertet beide Argumente unabhängig vom Ergebnis des ersten Ergebnisses.

if(txtName.Text.xyz() | txtLastName.Text.xyz()) { } 

Sie können auch das gleiche tun mit AND, das heißt Sie && mit einem einzigen Et-Zeichen ersetzen können die gleiche beeinflussen, wie oben zu erhalten:

if(txtName.Text.xyz() & txtLastName.Text.xyz()) { } // Both sides will be called 
+0

Ja, es ist früh! – GenericTypeTea

+0

Funktioniert es auch für Javascript? –

+0

Ja, es funktioniert genauso. – GenericTypeTea

4

nur eine einzige Bar verwenden;

if(txtName.Text.xyz() | txtLName.Text.xyz()) 
{ 

}