C#: Wie ist es möglich eine int-Variable in eine bool-Variable umzuwandeln?

9 Antworten

(bool)variablenname

Aber das führt dich hier nicht weiter, weil du offensichtlich etwas ganz anderes willst.

hallo = 5

ist eine Zuweisung, die den zugewiesenen Wert zurückgibt, hier also den Integer-Wert 5.

Im Gegensatz zu C und C++ und ebenso wie Java lässt C# implizite Umwandlungen zwischen verschiedenen Typkategorien (Zahlen, Booleans, Zeichenketten, ...) nicht zu. (In C/C++ ist genau dies eine beliebte Fehlerquelle, weshalb sich viele Coder angewöhnt haben, dort möglichst einen unveränderlichen Ausdruck nach links zu schreiben, also etwa

if (5=hallo) {

-- dann weist einen schon der Compiler darauf hin, dass hier was nicht stimmt. Sonst wird 5 als true interpretiert, woraufhin man sich einen Wolf nach dem Fehler sucht.)

Du meinst offensichtlich

if (hallo==5) {

(doppeltes Gleichheitszeichen)

Woher ich das weiß:Berufserfahrung
PWolff  07.07.2018, 21:12

Dass das einfache Gleichheitszeichen für die Zuweisung missbraucht wird, finde ich auch nicht gut, aber Pascal ist nicht so gefragt, und etablierte Sprachen zu ändern ist nicht so ganz einfach.

0

Wieso ist es eigentlich noch notwendig, eine Variable als wahr kennzuzeichnen, wenn über die Kontrollstruktur dieser Zustand bereits ermittelt/gesichert wurde?

Wie dem auch sei, lege eine Variable mit anderem Namen an. Vergib in diesem Zug am besten gleich bessere Bezeichner an.

int sum = 1 + 4;

if (sum == 5)
{
   bool sumIsFive = true;
}

Oder als Einzeiler, falls nicht noch mehr passieren soll:

sum = 1 + 4;
sumIsFive = sum == 5;

Bezüglich des Typecasts von Zahl zu Wahrheitswert: Nutze entweder wie oben Kontrollstrukturen / den ternären Operator oder Ausdrücke, die einen Wahrheitswert zurückgeben. Ansonsten gibt es noch die Klasse Convert.

Hallo.

Erstebs:
Die Variable "hallo" welche du deklariert hast ist vom Typ int. Den Typ einer Variable kannst du nachträglich nicht ändern. Zumindest nicht bei C#.

Zweitens:

Du würdest mit dem "bool hallo" eine neue Variable anlegen und keinen TypeCast machen. Dafür müsste die Zeile so aussehen "(bool)hallo = true". Was aber nicht funktionieren würde. Siehe erstens

Drittens:

Lege dir vor der IF-Abfrage eine 2te Variable vom typ bool an, welche du in der IF-Abfrage auf true setzt. So hast du zwar eine Variable mehrl, änderst dafür aber keine.

Woher ich das weiß:Berufserfahrung

Es muss if(hallo == 5) geschrieben werden, sonst weist du der Variable hallo nur den Wert 5 zu.

Typen kann man nicht konvertieren. Das sind ureigene Eigenschaften von Variablen. Das was Du vorhast, ließe sich damit auch nicht lösen. In COBOL geht das, das ist aber ein Feature des Compilers, eine Beziehung zwischen zwei Variablen, die zum Zeitpunkt des Compilierung festgelegt wird. Wenn dann zur Laufzeit die eine Variable die Bedingung erfüllt, wird die andere automatisch auf true gesetzt und umgekehrt. Sinn des ganzen ist, dass bestimmte Werte von Variablen, die oft abgefragt werden, nur an einer Stelle im Programm festgelegt sind und einfach geändert werden können. Man könnte das auch selber programmieren, aber dann ist der Nutzen weg. Man würde damit eine IF-Anweisung durch eine Routine ersetzen, die auch diesen IF in der ursprünglichen Form enthält. Wenn der Compiler das macht, ist das eine Erleichterung für den Programmierer, auch wenn der generierte Code umständlicher ist.