Ich habe mich gefragt - wann sollte ich das Member .Value auf einem NULL-fähigen Typ verwenden, anstatt nur die Variable selbst aufzurufen?
z.B. ..
bool? b = wahr;
Warum würde ich b.Value verwenden, um den Wert zu erhalten, anstatt nur b zu verwenden? Welchen Vorteil oder welche Funktion fügt der .Value-Aufruf hinzu?
Die Werteigenschaft ist schreibgeschützt und gibt den tatsächlichen Werttyp zurück. Die Eigenschaft value darf niemals null sein.
Wenn Sie erwarten, dass ein NULL-Wert einen Wert zurückgibt, überprüfen Sie .HasValue und verweisen Sie dann auf Value. Wenn Sie beispielsweise einem normalen Bool den Wert einer Nullable zuweisen möchten, müssen Sie auf dessen Wert verweisen:
%Vor%Das folgende wird jedoch nicht kompilieren:
%Vor% Wenn Sie Methoden / Eigenschaften des zugrunde liegenden Typs verwenden möchten. Gilt nicht wirklich für Bool. Lassen Sie mich das mit DateTime
verdeutlichen:
Sie können nicht direkt von d aus auf die Month-Eigenschaft zugreifen, da DateTime? hat diese Eigenschaft nicht.
Für mich ist es nicht so viel Wert wie das ist die Eigenschaft "HasValue", die ich nützlich finde
Der einzige Unterschied besteht darin, dass es sich um zwei verschiedene Arten handelt. Wenn du ein bool? hast, dann ist es ein Booler, bei dem keine NULL-Werte möglich sind.
Wenn Sie b.Value aufrufen, geben Sie tatsächlich einen bool und keinen bool zurück. . .
Subtil, aber wenn Sie die nicht nullfähige Version des Objekts benötigen, verwenden Sie die Eigenschaft .Value.