C#或任何其他语言如何与操作员不相等

yo *_*han -3 c# oop operators

嗨哪一个更快

            int a = 100;
        //First Way
        if (a != 100)
        {
            //Do something when a is not equal to 100
        }
        else
        {
            //Do something when a is equal to 100
        }

        //Second Way
        if (a == 100)
        {
            //Do something when a is equal to 100

        }
        else
        {
            //Do something when a is not equal to 100
        }
Run Code Online (Sandbox Code Playgroud)

我认为第二种方式更快,但我很想知道NOT EQUAL(!=)运算符是如何解决的.它是否首先实现了相等(==)操作,然后结果被否定为!(a == 100)?任何帮助都会得到很高的评价.

Jon*_*art 10

两者之间没有任何区别.对于一个int,它归结为x86上的两个汇编指令之一:

  • je - 如果相等则跳
  • jne - 跳不等

这些或任何jxx指令都需要相同的时间.

另请参阅我的与您的问题相关的其他答案.


既然你似乎很在乎,我建议你亲自测试一下.写两个循环,一个使用==,一个使用!=.然后System.Diagnostics.Stopwatch通过将它们包装在调用Start()和中来计时Stop().然后比较.通过循环的足够多的迭代次数(以最小化其他定时错误,如上下文切换,中断等),您将看到没有区别.