繁体   English   中英

无法在System.Boolean上测试

[英]Can't test on System.Boolean

这个

row["active"].GetType().ToString()

逃避

System.Boolean

为什么这是一个错误?

if (row["active"]) { ... }
if (row["active"] == true) { ... }

我认为System.Boolean可能是true还是false?

row["active"]的返回类型是一个对象,它作为布尔谓词无效。 返回的值实际上是一个包装的布尔值并不重要。

你知道它是一个布尔值,但编译器没有。 如果row["active"]会突然返回一个字符串怎么办? 比表达式无效。 .NET运行时在编译时提前绑定变量。 它不像运行时的​​语言那样在运行时评估它们的类型。

你必须通过强制转换它告诉编译器值是一个布尔值:

if ((bool)row["active"]) { ... }

row[string]返回type object ,而不是booleanif块不会自动转换为boolean类型。

你可以这样投你自己。

if ((bool) row["active"]) { ... }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM