Mittwoch, 8. September 2010

Von Sternen, Vektoren und der boolschen Variable mit drei Zuständen

Etwas das ich heute erfahren musste: Wenn man in C++ ein multidimensionales Array von unbekannter Größe allokieren will ist von folgendem Konstrukt komplett abzuraten:
int ***ptr = new int[a][b][c];

Die Benutzung ist hakelig und das Löschen problematisch. Weitere Gründe das zu vermeiden findet man hier. Nach zwei Fehlschlägen habe ich endlich den logisch und politisch korrekten Weg gefunden:
vector<> > > matrix;
Abseits von C++ habe ich heute bemerkt, dass es in C# eine boolsche Variable gibt, die drei Zustände hat: Laut Dokumentation kann man dem Typ bool? den Wert NULL zuweisen, da diese Variable Nullable ist. Glücklicherweise ist der normale bool Typ nicht nullable. Diesen Tristate verdeutlicht folgender Codeschnipsel:
bool? btest;
btest = null;
if (btest == true) { Console.WriteLine("null == true"); }
if (btest == false) { Console.WriteLine("null == false"); }
if (btest == null) { Console.WriteLine("null == null"); }

AUSGABE: null == null
Danke an AtiX fürs Testen.

Keine Kommentare: