2012-01-16 1 views
2

J'ai le code générique suivant:Un objet nul converti en int provoque NullReferenceException?

public V put(K key, V value){ 
     Object o = doOp(ClusterOperation.CONCURRENT_MAP_PUT, key, value);   
     return (V)o; 
} 

La chose est, l'objet o peut être nul. Lorsque je travaille avec des objets tels que String, il est correct de retourner null cast à String. Mais lorsque V représente int, alors null cast en int renvoie NullReferenceException.

Existe-t-il une solution suffisamment générique pour gérer les int?

Merci

+0

similaire à http://stackoverflow.com/questions/361258/why-does-casting-a-null-to-a-primitiveie-int-in-net-2-0-throw-a-null-ref -exc –

+0

Je sème cette question avant de poster. Ce n'était pas assez pour moi de le comprendre. –

Répondre

7

Utilisez le mot-clé default:

if(o == null) 
    return default(V); 

return (V)o; 
+0

+1 pour le mot-clé par défaut. – VS1

2

utilisation int? (à savoir un nullableint) au lieu de int.

+0

J'ai accepté la réponse d'Oded. Mais ton indice m'a permis de comprendre que int est différent d'int? . +1 pour cela, merci –

1

int ne peut être nul aussi longtemps que ce n'est pas un nullable int. Si votre int peut être nul, il se sent aussi comme la bonne solution à utiliser nullable de toute façon.

Questions connexes