C# 杂项表演
在C#Net中进行比较或转换更快吗?C# 杂项表演,c#,memory-management,C#,Memory Management,在C#Net中进行比较或转换更快吗? 例如: bool? flag = null; ... if(flag == true)... or if((bool)flag)... 此外,强制转换的成本(内存中)是多少?如果内存可用,编译器将强制您在If语句中使用bool之前将bool?强制转换为bool。您可能喜欢空合并运算符: //If flag == null then return false, otherwise return the value of flag. if
例如:
bool? flag = null;
...
if(flag == true)... or if((bool)flag)...
此外,强制转换的成本(内存中)是多少?如果内存可用,编译器将强制您在If语句中使用
bool之前将bool?
强制转换为bool
。您可能喜欢空合并运算符:
//If flag == null then return false, otherwise return the value of flag.
if (flag ?? false)
IIRC,这些翻译成大致相同的东西。除非您进行了大量的此类检查,否则在任何实际用途中都不会注意到差异。如果标志中的空值表示“false”,我将使用比较。强制转换是个坏主意,因为如果标志为null,它将抛出异常。要保存,必须在强制转换之前测试null。这意味着您必须进行比较和转换,而不是仅进行比较。性能差异可以忽略不计
还要记住
bool? flag = null;
// ...other code...
if ((bool)flag)
{
}
如果变量声明和强制转换之间的代码中未分配标志
,则可能引发InvalidOperationException
。我必须询问。。。为什么要使用可空布尔值?我总是发现,将bool设置为“正确”的值,然后仅根据某些条件更改它是有效的,然后您可以避免这个问题:您可以简单地使用“if(flag)”,我认为这是说明我的问题的最简单的方法。不过,您是对的,只使用布尔值是更好的方法。