其他表现

时间:2010-06-15 14:09:33

标签: c# memory-management

在C#.Net中进行比较或转换是否更快?
例如:

bool? flag = null;    
...    
if(flag == true)... or if((bool)flag)...  

此外,演员阵容的成本(内存中)是多少?

4 个答案:

答案 0 :(得分:3)

如果内存服务,编译器将强制您将bool?强制转换为bool,然后在if语句中使用它。您可能喜欢null coalesce运算符:

//If flag == null then return false, otherwise return the value of flag.
if (flag ?? false)

答案 1 :(得分:0)

IIRC,那些转化为大致相同的东西。除非你做了大量的这类检查,否则这种差异对任何实际目的都是不可理解的。

答案 2 :(得分:0)

如果flag中的空值表示“false”,我会使用比较。演员是一个坏主意,因为如果flag为null,它将抛出异常。要保存,你必须在演员表之前测试null。这意味着你必须进行比较和演员而不是比较。

答案 3 :(得分:-1)

性能差异可以忽略不计。

还要记住

bool? flag = null;
// ...other code...
if ((bool)flag)
{
}
如果在变量声明和强制转换之间的代码中未分配InvalidOperationException

可能会抛出flag