是否有更清晰的方式来写这个?
if (!(obj is bool) || (bool)obj)
Run Code Online (Sandbox Code Playgroud)
在PHP或JS中你可以写
if (obj !== false) // note the double == to indicate a type-check
Run Code Online (Sandbox Code Playgroud)
它只是有点难以阅读,并且在C#中语法相当丑陋.
要绝对清楚,obj是一个object.
if (!false.Equals(obj)) { ... }
Run Code Online (Sandbox Code Playgroud)
编辑:因为我不希望@BoltClock失去视力,所以这里可能会更好:
if ((bool?)obj != false) { ... }
Run Code Online (Sandbox Code Playgroud)
编辑2:不要尝试我上面提到的内容,因为如果obj是bool?或者类型以外它将不起作用bool.