【问题标题】:A null object cast to int causes NullReferenceException?强制转换为 int 的 null 对象会导致 NullReferenceException?
【发布时间】:2012-01-16 12:16:30
【问题描述】:

我有以下通用代码:

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

问题是,对象 o 可以为空。当我使用像 String 这样的对象时,可以将 null 强制转换为 String。但是当 V 表示 int 时,将 null 强制转换为 int 会引发 NullReferenceException。

有没有足够通用并处理 int 的解决方案?

谢谢

【问题讨论】:

标签: c# generics casting nullreferenceexception


【解决方案1】:

使用default 关键字:

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

return (V)o;

【讨论】:

    【解决方案2】:

    使用int?(即nullableint)代替int

    【讨论】:

    • 我接受了奥德的回答。但是你的提示让我明白 int 与 int 不同? .为此 +1,谢谢
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-08
      • 1970-01-01
      相关资源
      最近更新 更多