【发布时间】:2021-02-15 12:46:23
【问题描述】:
在检查变量是否为真、假、空等时,使用传统逻辑运算符(如==、!=)与 C# 中的is 运算符进行检查是否存在性能差异?除了任何潜在优化之外,还有什么理由反对使用is,而== 和!= 可以使用?
is 运算符在具有布尔值和空值的实例中的工作方式似乎相同,但我很好奇任何可能的缺点,例如性能或没有充分记录的最佳实践,以防止使用 is 代替 ==, != 一直没找到,故提示提问。
例如:
if (myObject == false)
{
...
}
对
if (myObject is false)
{
...
}
【问题讨论】:
-
你做了哪些测试/基准测试来确定
is there a performance difference in doing a check? -
is运算符可读性较差,因为程序员必须弄清楚它在这个特定表达式中的可能含义。 -
查看生成的 IL 可能会让您了解不同之处。
-
@RufusL 为什么你认为他们对 IL 操作性能的了解会比他们对 C# 操作的了解更多?
-
@RufusL 当然,如果您对 IL 有深入的了解,而对 C# 的理解却差强人意,那么这是一种很好的方法,而且很容易实现。但大多数人不在那个位置。
标签: c# .net performance operators