Laden...

Trinitätsoperator in C#

Letzter Beitrag vor 15 Jahren 8 Posts 2.872 Views
Trinitätsoperator in C#

gibts den überhaupt in C#? Ich hasse es kurze entscheidungen so schreiben zu müssen:


if (SmsSender.SendMessage())
{
	r = true;
}
else
{
	r = false;
}

das ist einfach sexier 🙂


SmsSender.SendMessage() ? r = true : r = false;

Leider wirft die IDE hierbei einen Fehler und bei Google fand ich leider auch nichts.

r = SmsSender.SendMessage()

Hi,

Ich würde mal nach "Ternärer Operator" suchen. Hier mal die Syntax wie ich sie kenne:

int    value = (x < 10) ? 15 : 5;

Hallo Sandro Emanuel,

genau wie GarlandGreene sagt. Siehe dazu [Tipp] Anfängerfehler == true / == false.

Ansonsten gibt es den Operator schon, aber er ist eigentlich nicht für die von dir gezeigte Verwendung gedacht. Der Operator soll ein Ergebnis liefern und keine Zuweisungen durchführen. Wenn es wegen des [Tipp] Anfängerfehler == true / == false nicht ohnehin unsinnig wäre, solltest du also schreiben:

r = SmsSender.SendMessage() ? true : false;

herbivore

r = SmsSender.SendMessage()

Geht leider nicht, da SendMessage() void ist.

Hi,

Ich würde mal nach "Ternärer Operator" suchen. Hier mal die Syntax wie ich sie kenne:

int    value = (x < 10) ? 15 : 5;  

aaah... genau. Das sieht dann noch sexier aus, weil ich "r" nicht zweimal schreiben muss.

r = SmsSender.SendMessage() ? true : false;

Vielen Dank!

Edit: @herbivore: Du hast natürlich recht. Der Operator soll ein Ergebnis liefern und keine Zuweisungen durchführen. Entweder hat es damals mit PHP trotzdem funktioniert, oder mein Hirn war kurzzeitig auf Standby 😁

Hallo Sandro Emanuel,

Geht leider nicht, da SendMessage void ist.

dann geht aber auch dein if nicht. Deine Probleme haben nichts mit dem Operator zu tun.

Und eine Konstruktion wie

b = bed ? true : false;

ist - wie schon gesagt - immer witzlos, weil man stattdessen besser

b = bed;

schreibt.

herbivore

Geht leider nicht, da SendMessage void ist.
dann geht aber auch dein if nicht. Deine Probleme haben nichts mit dem Operator zu tun.

Ehm.. ja 8o. Montagmorgen. Mein Hirn ist tatsächlich noch nicht ganz da. Selbstverständlich gibt SendMessage() bool zurück :S

für den Fall, dass man mal nicht ein Bool als Prüfergebnis braucht:


string a;
a = Methode() == 1 ? "OK" : "NICHT OK";