Frage

Ich habe mich gefragt - wann würde ich das .Wert Mitglied auf einem Nullable Type, anstatt nur den Aufruf der Variable selbst

verwenden möchten

z ..

bool? b = true;

Warum soll ich B.Wert, um den Wert zu erhalten, anstatt nur mit b? Welchen Vorteil oder Funktion hat die .Wert Anruf hinzufügen?

War es hilfreich?

Lösung

Der Wert Eigenschaft wird nur gelesen und wird die Istwert-Typ zurück. Der Wert Eigenschaft kann nicht null sein.

Wenn Sie eine Nullable-Rückkehr ein Wert dann .HasValue überprüfen und dann Referenzwert zu erwarten. Zum Beispiel, wenn Sie den Wert eines Nullable zu einem gewöhnlichen bool zuweisen möchten, dann müssen Sie es Wert verweisen:

bool? nullableBool = null;

if (nullableBool.HasValue)
{
    bool realBool = nullableBool.Value;
}

Allerdings ist die folgende wird nicht kompilieren:

bool? nullableBool = true;
bool realBool = nullableBool; // Won't work

Andere Tipps

.Value gibt einen bool eher als ein Bool? die Ihnen erlauben, sie als Parameter an Funktionen zu verwenden, die nicht auf NULL festlegbaren Typen erwarten Sie.

Wenn Sie wollen Methoden / Eigenschaften des zugrunde liegenden Typs verwenden. Nicht wirklich zu Bool anzuwenden. Lassen Sie mich erläutern mit DateTime:

DateTime? d;
int month = d.Value.Month;

Sie können nicht darauf zugreifen Monat Eigentum direkt von d, da Datetime? diese Eigenschaft nicht hat.

Für mich ist es nicht so viel Wert wie die die Eigenschaft „HasValue“ ist, dass ich nützlich finden

Der einzige Unterschied ist, dass sie zwei verschiedene Typen. Wenn Sie eine Bool haben? , dann ist es ein Nullable Type von Bool.

Wenn Sie rufen B.Wert Sie Rückkehr tatsächlich eine Bool und nicht bool? .

Subtil, aber wenn man die Nicht-Nullable-Version des Objekts benötigt, verwenden Sie die .Value Eigenschaft.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top