Laden...

Trinitätsoperator in C#

Erstellt von Sandro Emanuel vor 15 Jahren Letzter Beitrag vor 15 Jahren 2.848 Views
Sandro Emanuel Themenstarter:in
17 Beiträge seit 2008
vor 15 Jahren
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.

G
497 Beiträge seit 2006
vor 15 Jahren

r = SmsSender.SendMessage()

H
3 Beiträge seit 2007
vor 15 Jahren

Hi,

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

int    value = (x < 10) ? 15 : 5;
49.485 Beiträge seit 2005
vor 15 Jahren

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

Sandro Emanuel Themenstarter:in
17 Beiträge seit 2008
vor 15 Jahren

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 😁

49.485 Beiträge seit 2005
vor 15 Jahren

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

Sandro Emanuel Themenstarter:in
17 Beiträge seit 2008
vor 15 Jahren

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

G
497 Beiträge seit 2006
vor 15 Jahren

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


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