C# WPF if verkürzen?

3 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Zuerst zu den Möglichkeiten, die dir WPF bietet (ungeachtet, ob es dadurch kürzer wird oder nicht):

In WPF lassen sich Validation Rules anlegen. Ich habe mal auf die Schnelle ein Beispiel herausgesucht: https://social.msdn.microsoft.com/Forums/en-US/ca9100c6-170a-4eb7-8d39-60d3d2d96f23/how-to-validation-empty-textbox-when-button-click-wpf?forum=wpf - beachte auch die dort verlinkten Artikel zur Dokumentation.

Anders als in diesem Beispiel würde ich für einen neuen TextBox Style diesen als Resource anlegen, dann ist er öfter für weitere Textboxen wiederverwendbar.

Andere Lösungsansätze, die mir gerade einfallen:

Auf null brauchst du die Textfelder natürlich nicht prüfen. Du kannst sie aber in ein Dictionary packen, in Assoziation: TextBox zu Delegate. Das Delegate gibt einen boolschen Wert zurück und prüft, ob die Eingabe valid ist. Über das Dictionary iterierst du drüber, je Iteration wird der nächste Delegate aufgerufen. Ist ein Ergebnis nicht wahr, kann die Schleife vorzeitig abgebrochen werden.

Das lohnt sich aber nur, wenn die mehr als vier Textfelder hast.

In Anbetracht der Leistung heutiger Rechner steht der Aufwand solcher Überlegungen in keinem gesunden Verhältnis zum Gewinn an Performance, selbst bei einer Sprache wie XAML. Ich würde lediglich versuchen, die Verschachtelung des Codes zu vermeiden. Schematischer Code :

flag = 0;
if (condition1) flag = flag or 1;
if (condition2) flag = flag or 2;
if (condition3) flag = flag or 4;
if (condition4) flag = flag or 8;

usw.

Aufgrund des Wertes von flag kann man sehr übersichtlich entscheiden, welche der condition erfüllt bzw. nicht erfüllt ist. Wenn alle erfüllt sein müssen, kann man noch einfacher nach jeder Abfrage abbrechen, ganz ohne flag.

Du kannst auch anstelle von verschachtelten ifs ein einziges if machen und die Bedingungen mit dem logischen UND verknüpfen:

if(condition1 && consition2 && condition3)
{
    // wenn alles true ist, dann geht es hier weiter
}

Das setzt natürlich voraus, dass zu den einzelnen ifs kein separates else kommen soll.

Woher ich das weiß:Studium / Ausbildung