Entwickler-Ecke
WinForms - If-Abfrage mit mehreren getrennten Bedingungen
bugmenot - Fr 24.07.15 20:48
Titel: If-Abfrage mit mehreren getrennten Bedingungen
Ich möchte gerne eine If-Abfrage erstellen, bei der mehrere Bedingungen getrennt erfüllt sein sollen.
Erklärt:
Bis jetzt habe ich versucht:
C#-Quelltext
1: 2: 3: 4:
| if (Bedingung1 && Bedingung2 == true || Bedingung2 && Bedingung3 == true) { mach irgendwas! } |
Dabei hat er "mach irgendwas!" auch ausgeführt, wenn die Bedingungen 1 und 3 beide true waren, während Bedingung 2 false war.
Wie kann ich also die Bedingungen "trennen"? Das "||" scheint ja nicht zu funktionieren...
Ralf Jansen - Fr 24.07.15 21:50
Ein Bedingung ist bereits ein boolscher Ausdruck und damit true oder false. Da brauch mann dann nicht mehr mit true oder false zu vergleichen die Bedingung ist bereits true oder false. Also einfach
C#-Quelltext
1:
| if ((Bedingung1 && Bedingung2) || (Bedingung2 && Bedingung3)) |
Th69 - Sa 25.07.15 07:16
Hallo,
außerdem kommt es bei den Ausdrücken auch auf die
Operatorpriorität [
https://msdn.microsoft.com/de-de/library/Aa691323%28v=VS.71%29.aspx] an:
== hat eine höhere Priorität als
&& und
||, weswegen der Ausdruck als
C#-Quelltext
1:
| if (Bedingung1 && (Bedingung2 == true) || Bedingung2 && (Bedingung3 == true)) |
ausgewertet wird (daher dein Ergebnis).
Aufgrund der o.g. Operatorpriorität reicht es sogar, den Ausdruck von Ralf ohne Klammern als
C#-Quelltext
1:
| if (Bedingung1 && Bedingung2 || Bedingung2 && Bedingung3) |
zu schreiben (auch wenn es mit den Klammern lesbarer und verständlicher ist).
Und diesen kann man sogar aufgrund der
De Morgansche Regeln [
https://de.wikipedia.org/wiki/De_Morgansche_Gesetze] zu
C#-Quelltext
1:
| if ((Bedingung1 || Bedingung3) && Bedingung2) |
verkürzen.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!