出于测试目的,我写了一个简单的代码。第一种方法更适合编码标准。第二种方法是传统方式。我用秒表来比较,我尝试了一切,但无法弄清楚为什么方法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更好?感谢。
编辑:
更改为此但仍然更快。
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";
}
}
我认为这不是比较计数。
答案 0 :(得分:0)
在Method1中,您正在进行字符串比较以检查控件的状态。
在Method2中,您正在进行布尔比较。
后者会更快。