So erhalten Sie den Standardwert für einen ValueType-Typ mit Reflektion

8

Wenn ich einen generischen Typparameter habe, der ein Werttyp ist, und ich möchte wissen, ob ein Wert dem Standard entspricht, teste ich es wie folgt:

%Vor%

Wenn ich keinen generischen Typparameter habe, scheint es, als ob ich Reflection benutzen müsste. Wenn die Methode für alle Wertetypen funktionieren soll, dann Gibt es eine bessere Möglichkeit, diesen Test durchzuführen als das, was ich hier mache? :

%Vor%

Nebenbei bemerkt: Gibt es etwas, was ich hier nicht im Hinblick auf die Auswertung von Nullable-Strukturen betrachte?

    
smartcaveman 15.08.2011, 17:01
quelle

4 Antworten

8

Ich habe die folgenden Erweiterungsmethoden nützlich gefunden und werde für alle Typen funktionieren:

%Vor%     
Reddog 15.08.2011, 17:56
quelle
3

Alte Frage, aber die akzeptierte Antwort funktioniert nicht für mich, also schicke ich dies (wahrscheinlich kann besser gemacht werden):

%Vor%

Mit den folgenden Ergebnissen:

%Vor%     
dav_i 16.07.2013 14:04
quelle
1

Ich würde ValueType als Parameter zur Vereinfachung benötigen:

%Vor%     
Gene C 15.08.2011 17:11
quelle
0
  

Übrigens: Gibt es etwas, das ich hier nicht in Betracht ziehe?   bezüglich der Auswertung von Nullable-Strukturen?

Ja, du verpasst etwas. Wenn Sie einen object als Parameter in sich verwenden, müssen Sie den Code Nullable<T> types eingeben (der sie in null oder in ihren T -Wert konvertiert). Wenn Sie also ein NULL-Zeichen übergeben, wird Ihr is/throw übergeben, weil null niemals ein Werttyp ist.

Bearbeiten: Wie @cdhowie gesagt hat, müssen Sie nach null suchen. Dies funktioniert auch für Nullable-Typen.

    
agent-j 15.08.2011 17:27
quelle