gpt4 book ai didi

.net - 对空字符串和 DBNull 感到困惑

转载 作者:行者123 更新时间:2023-12-03 18:11:26 25 4
gpt4 key购买 nike

我正在查看我正在处理的 .net 程序的一些代码。该程序的前任作者在一年前将代码给了我。突然,我看到一个我没有接触过的代码抛出的异常:

if ((string)row["LevelName"] != "ABC")

异常(exception)是“无法将‘System.DBNull’类型的对象转换为‘System.String’类型。

我认为该字符串是一个可为空的数据类型,那么我怎么可能会得到这个异常呢?

最佳答案

我相信你正在寻找的是:

if ((row["LevelName"] as String) != "ABC")

DBNull 和 String 之间没有隐式转换。

它以前可能有效,因为您的数据库中该列中恰好没有 NULL。也许某些数据已损坏,或者有人更改了表上的 NOT NULL 约束。

基本上,如果您显式转换某些内容,则最好确保它们具有兼容的动态类型,否则会引发异常。 as运算符基本上是说“如果可能,将其转换为 this,否则逻辑值为 null。”显然, as运算符仅适用于引用类型,因为结构不能为空。

关于.net - 对空字符串和 DBNull 感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8043941/

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