加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 什么是例外? InvalidCastException的

发布时间:2020-12-15 22:12:54 所属栏目:百科 来源:网络整理
导读:在遗留应用程序中,我们有一个SqlDataReader.以下字段使用位字段创建InvalidCastException. public static T GetValueOrNullT(this IDataReader reader,string column){ int ordinal; if(!string.IsNullOrEmpty(column) !reader.IsDBNull(reader.GetOrdinal(c
在遗留应用程序中,我们有一个SqlDataReader.以下字段使用位字段创建InvalidCastException.

public static T GetValueOrNull<T>(this IDataReader reader,string column)
{
     int ordinal;
     if(!string.IsNullOrEmpty(column) && !reader.IsDBNull(reader.GetOrdinal(column)))
          if(int.TryParse(reader.GetOrdinal(column).ToString(),out ordinal))
               return (T)reader.GetValue(ordinal);

      return default(T);
}

奇怪的是,(T)reader.GetValue(ordinal)确实指定了一个有效的类型.它指定了一个错误,但仍然会发生错误.我不完全确定为什么.

如果我执行GetType();它确实显示布尔类型.我还检查过以确保它是线程安全的.

解决方法

代码在位字段上失败的原因(与布尔值相关)是由推断类型引起的.基础数据类型不是bool而是bool?

一旦模型反映了可以为空的布尔值,代码就按预期工作.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读