此
row["active"].GetType().ToString()
逃避
System.Boolean
为什么这是一个错误?
if (row["active"]) { ... }
if (row["active"] == true) { ... }
我认为System.Boolean可能是true还是false?
答案 0 :(得分:6)
row["active"]
的返回类型是一个对象,它不作为布尔谓词有效。返回的值实际上是一个包裹的布尔值并不重要。
你知道它是一个布尔值,但编译器没有。如果row["active"]
会突然返回一个字符串怎么办?比表达式无效。 .NET运行时在编译时提前绑定变量。它没有像运行语言那样在运行时评估它们的类型。
你必须通过强制转换它告诉编译器值是一个布尔值:
if ((bool)row["active"]) { ... }
答案 1 :(得分:2)
row[string]
会返回object
类型,而非boolean
,if
块不会自动转换为boolean
类型。
你可以这样投你自己。
if ((bool) row["active"]) { ... }