Nullable-Variablentypen - .value-Member

7

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?

    
Valerie 29.07.2009, 20:04
quelle

5 Antworten

13

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%     
Dan Diplo 29.07.2009, 20:16
quelle
3

.Wert gibt einen bool statt einen bool zurück? Dadurch können Sie es als Parameter für Funktionen verwenden, die keine NULL-Typen erwarten.

    
krdluzni 29.07.2009 20:09
quelle
2

Wenn Sie Methoden / Eigenschaften des zugrunde liegenden Typs verwenden möchten. Gilt nicht wirklich für Bool. Lassen Sie mich das mit DateTime verdeutlichen:

%Vor%

Sie können nicht direkt von d aus auf die Month-Eigenschaft zugreifen, da DateTime? hat diese Eigenschaft nicht.

    
Edo 29.07.2009 20:15
quelle
1

Für mich ist es nicht so viel Wert wie das ist die Eigenschaft "HasValue", die ich nützlich finde

    
TWith2Sugars 29.07.2009 20:14
quelle
1

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.

    
Brandon 29.07.2009 20:09
quelle

Tags und Links