Frage von ZerricK, 57

C# bool immer False in Class?

Hallo, ich hab ein kleines Problem in C#

Ich Lerne grade C# und ich hab ein Problem das ich nicht Lösen kann und auch nix finden kann. http://pastebin.com/6HAqbYqz Der bool frei ist immer False, auch wenn ich ihn true mache. Woran kann das liegen?
Im Buch stand das fast genauso mit der Class aber funktioniert trotzdem nicht wie im Buch drinnen

Danke im vorraus

Antwort
von linlux, 32

Moin,

ich bin jetzt kein Experte für C#, aber wo setzt Du "frei" denn auf "true"?

In Zeile 43 wird er auf "false" gesetzt.
Soweit ich weiß, kann aber auch anders sein, ist ein Bool beim Initialisieren immer "false", wenn man ihn nicht direkt mit "true" initialisiert.

Also wo soll "frei" denn "true" werden in Deinem Code?


Hab's gefunden:
"
The default value of a bool variable is false.
"
https://msdn.microsoft.com/en-us/library/c8f5xwh7.aspx

Grüße, linlux

Kommentar von ZerricK ,

Ich meinte wenn man ihn auf True umstellt, also statt false, true hinschreibt

Kommentar von linlux ,

Initialisiere "frei" mal mit = true

Kommentar von ZerricK ,

Das meinte ich ja, wenn man ihn auf True setzt, ist er immer noch false

Kommentar von linlux ,

Tue mal bitte folgendes. In Zeile 34 oder in einer Zeile direkt darunter, setzt Du "frei" direkt auf "true".

Alternativ kannst Du auch bei Deiner if-Bedingung ein else dazu schreiben und "frei" dort auf "true" setzen.

Kommentar von ZerricK ,

Geht nicht, frei ist immer noch false Oo

Kommentar von Spirit528 ,

Sitzen.Platz() bzw. mit Deiner Instanz nummer.Platz() wird nie aufgerufen!

mach mal

var nummer = new Sitzen();
nummer.Platz();

Kommentar von ZerricK ,

Oh gott, vielen Dank :D! Du hast mir weitergeholfen.

Kommentar von ZerricK ,

Ok, ich hab mich zufrüh gefreut, es wird jetzt immer True angezeigt ;n;

Antwort
von Mikkey, 26

So ist das ganze unglücklich aufgebaut.

Mach aus "frei" eine read-only-Property, die sich aus dem Wert "(number <= max)" bedient und lass solche redundanten Definitionen weg.

Antwort
von Mikkey, 27

In dem Code ist keine Stelle enthalten, in dem frei auf true gesetzt wird.

Kommentar von ZerricK ,

Aber wenn man bei zeile 43 den Bool auf true setzt, ist er trotzdem false

Kommentar von Mikkey ,

Die Codestelle wird nicht aufgerufen

Kommentar von linlux ,

Lass Dir mal "number" und "max" ausgeben - ich glaube die "if"-Bedingung ist nicht erfüllt und so kommt es nicht dazu, dass "frei" auf "true" gesetzt wird an der Stelle. Wo setzt Du denn "number"? Also wie groß ist "number"?

Kommentar von ZerricK ,

Zeile 15 und 16, so stand es nicht im buch aber ich wollte es mal so versuchen.

Kommentar von linlux ,

Lass Dir mal "nummer" ausgeben und schaue Dir Deine if-Bedingung an. Mache einfach noch ein else dazu und schreibe in das if und das else jeweils eine Ausgabe. Dann weißt Du wenigstens wie der Ausdruck ausgewertet wird.

Kommentar von ZerricK ,

Steht ja in zeile 26,27 und 28 das es mir die Werte ausgeben soll

Kommentar von linlux ,

Dein if in Zeile 41. Ergänze es um ein else. Lasse Dir dort in dem if und dem else "frei" ausgeben. Dort und nur dort. Nicht woanders.

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten