转换为int的null对象会导致NullReferenceException?

时间:2012-01-16 12:16:30

标签: c# generics casting nullreferenceexception

我有以下通用代码:

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

问题是,Object o可以为null。当我使用像String这样的对象时,可以将null强制转换为String。但是当V表示int时,则null cast to int抛出NullReferenceException。

是否存在足够通用且处理int的解决方案?

由于

3 个答案:

答案 0 :(得分:7)

使用default关键字:

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

return (V)o;

答案 1 :(得分:2)

使用int?(即nullable int)代替int

答案 2 :(得分:1)

int只要不是可以为空的int就不能为null。如果你的int可以为null,那么感觉它也是使用nullable的正确解决方案。