gpt4 book ai didi

c# - 什么异常(exception)?无效的CastException

转载 作者:行者123 更新时间:2023-11-30 12:44:00 26 4
gpt4 key购买 nike

在遗留应用程序中,我们有一个 SqlDataReader。以下字段创建一个带有 bit 字段的 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) 确实分配了一个有效类型。它分配了一个 false,但错误仍然发生。我不完全确定为什么。

如果我执行 GetType(); 它确实会显示 Boolean 类型。我还进行了检查以确保它是线程安全的。

最佳答案

代码在与 bool 值 相关的位字段 上失败的原因是推断类型。底层数据类型不是 bool 而是 bool?

一旦模型反射(reflect)了一个可为 null 的 bool 值,代码就会按预期工作。

关于c# - 什么异常(exception)?无效的CastException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29632808/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com