Diskuze: Porovnání "nullable bool"
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 9 zpráv z 9.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Fieldvalue nemáš nullable - > int? -> jinak pokud uděláš objekt nullable má pak propertu HasValue. A taky je určité ta třída na indexu [5,5] inicializovana?
U nullovatelných vlastností se neptáš
Property!=null
ale
Property.HasValue
a pokud ano, tak
Property.Value
Zkus elvisa:
// ...
if (SomeField[5, 5]?.FieldValue != null)
// ...
U nullovatelnych se muzes ptát taky
Property!=null
Stejně tak můžeš použít i jiné operátory, např:
int? karel;
bool ctibor;
karel = 0;
ctibor = karel > 0; // false
karel = null;
ctibor = karel > 0; // false
karel = 42;
ctibor = karel > 0; // true
Operátory jsou jenom zástupné řešení. Řešení tohoto problému bude spíše s otázce roč si vybíráš data z pole do kterého sis nic nedal, že?
Chci v pokračování kódu zjišťovat, jestli dané pole patří 1. hráči, 2. hráči, nebo jestli je prázdné... Napadlo mě, že nejjednodušší bude "nullable bool", který má hodnoty "null!, "true", "false"... Jestli pro to máte nějaký lepší návrh, prosím, budu moc rád, když mi poradíte... Nejsem zkušený programátor...
Tak jinak. Komentáře v kódu
public class OneMineField
{
public int PositionX { get; private set; }
public int PositionY { get; private set; }
public bool HasMine { get; set; }
public OneMineField(int PositionX, int PositionY)
{
this.PositionX = PositionX;
this.PositionY = PositionY;
}
}
public class Board
{
const int sizeX = 5;
const int sizeY = 5;
OneMineField[,] fields = new OneMineField[sizeX, sizeY];
public Board()
{
fields = new OneMineField[sizeX, sizeY];
// tady oneField je null, protože to pole není naplňené
var oneField = fields[3, 3];
/*nezapoměl si 'náhodou' na tuto část ?*/
for (int counterSizeX = 0; counterSizeX < sizeX; counterSizeX++)
for (int counterSizeY = 0; counterSizeY < sizeY; counterSizeY++)
{
fields[counterSizeX, counterSizeY] = new OneMineField(counterSizeX, counterSizeY);
}
//a tady už je všechno v pořádku
oneField = fields[3, 3];
}
}
Zobrazeno 9 zpráv z 9.