Нулевой объект, приведенный к int, вызывает NullReferenceException? - PullRequest
2 голосов
/ 16 января 2012

У меня есть следующий общий код:

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

Дело в том, что объект o может быть нулевым.Когда я работаю с такими объектами, как String, можно вернуть null cast в String.Но когда V представляет int, тогда null, приводимый к int, генерирует исключение NullReferenceException.

Есть ли какое-нибудь решение, которое достаточно универсально и обрабатывает целые числа?

Спасибо

Ответы [ 3 ]

7 голосов
/ 16 января 2012

Используйте ключевое слово default:

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

return (V)o;
2 голосов
/ 16 января 2012

Используйте int? (то есть обнуляемый int) вместо int.

1 голос
/ 16 января 2012

int не может быть нулевым, если это не обнуляемое int. Если ваш int может быть нулевым, он также чувствует, что это правильное решение для использования null в любом случае.

...