有什么大不同?在if语句中转换或测试值差异

Don*_*yle 4 c#

在这种情况下,我的变量Truth是一个可以为空的变量.我的问题很简单

写这样的话有什么不对吗?

if ((bool)Truth) {}
Run Code Online (Sandbox Code Playgroud)

或者我应该坚持这个?

if (Truth == True) {}
Run Code Online (Sandbox Code Playgroud)

从来没有使用过可变量变量,如果((bool)Truth){}又采取了一个额外的步骤,那么可能还有其他差异吗?

Jes*_*cer 5

这些在语义上是不同的.如果Truthnull,则演员表会失败InvalidOperationException: Nullable object must have a value.第二个不会失败,只要值中有值就执行true.除非程序中此时null应该是无效值,否则请使用第二个版本.