C#: Alternative zu GenericType == null

Brauche ich, um zu überprüfen Sie ein generisches Objekt für null oder default(T). Aber ich habe ein problem... Momentan habe ich es gemacht wie hier:

if (typeof(T).IsValueType)
{
  if(default(T).Equals(thing))
    //Do something
  else
    //Do something else
}
else
{
  if(thing == null)
    //Do something
  else
    //Do something else
}

Aber dann habe ich am Ende hin, mich zu wiederholen... was ich nicht mag. Das problem ist Folgendes:

thing == null;

Hier ReSharper warnt über Mögliche Vergleiche von Wert-Typ mit 'null'.

thing == default(T);

Hier bekomme ich compiler Fehler: Cannot apply-operator '==' auf Operanden vom Typ 'T' und 'T'.

thing.Equals(null|default(T));

thing können offensichtlich null sein (das ist, warum ich habe zu prüfen!), so wird NullReferenceException.

null|default(T).Equals(thing);

null und default(T) ist sehr oft null...

Ist es eine saubere Art und Weise, dies zu tun??

InformationsquelleAutor Svish | 2009-02-19
Schreibe einen Kommentar