关于 if 和 ? 的速度比较:

Speed comparison about if and ?:

出于测试目的,我编写了一个简单的代码。第一种方法更适合编码标准。第二种方法是传统方式。我使用秒表进行比较,我尝试了所有方法但无法弄清楚为什么方法 2(传统)比方法 1 快? (if) 比 ?: 运算符快吗?

我的表单设计;

我的代码;

    namespace WindowsFormsApplication3
{
    using System;
    using System.Diagnostics;
    using System.Windows.Forms;

    internal partial class Form1 : Form
    {
        private void Button1Click(object sender, EventArgs e)
        {
            var sw = new Stopwatch();

            sw.Start();

            Method1();

            sw.Stop();

            listBox1.Items.Add($"Method1 -> {sw.Elapsed}");

            sw.Reset();

            sw.Start();

            Method2();

            sw.Stop();

            listBox1.Items.Add($"Method2 -> {sw.Elapsed}");
        }

        private void Method1()
        {
            pictureBox.Visible = !pictureBox.Visible;
            button1.Text = this.button1.Text == "Close" ? "Open" : "Close";
        }

        private void Method2()
        {
            if (pictureBox.Visible)
            {
                pictureBox.Visible = false;
                button1.Text = "Open";
            }
            else
            {
                pictureBox.Visible = true;
                button1.Text = "Close";
            }
        }
    }
}

谁能给我解释一下为什么 Method2(传统)比 Method1 好?谢谢

编辑:

改成了这个,但方法 1 仍然更快。

        private void Method2()
    {
        if (pictureBox.Visible)
        {
            pictureBox.Visible = false;
            if (this.button1.Text == "Close")
            {
                this.button1.Text = "Open";
            }
            else
            {
                this.button1.Text = "Close";
            }
        }
        else
        {
            pictureBox.Visible = true;
            if (this.button1.Text == "Close")
            {
                this.button1.Text = "Open";
            }
            else
            {
                this.button1.Text = "Close";
            }
        }

我觉得不是比较次数的问题

在方法 1 中,您正在进行字符串比较以检查控件的状态。

在方法 2 中,您正在进行布尔比较。

后者会更快