是为test引用textbox's的text属性更快,还是将字符串赋值给该属性然后再test ?

本文关键字:属性 test 字符串 赋值 然后 textbox 引用 是为 text | 更新日期: 2023-09-27 18:02:06

我一直在想哪个更快(或者如果它甚至有所不同),引用文本框的文本属性或分配给该值的字符串?参考文本框。文本

if(textbox1.Text == "A")
{ //do a million iterations
}

string aString = textbox1.Text;
if(aString == "A")
{ //do a million iterations
}

是为test引用textbox's的text属性更快,还是将字符串赋值给该属性然后再test ?

我用秒表做了一个快速分析:10.000.000次迭代。

在第一种情况下,它返回给我:00:00:21.56

在第二种情况下它返回给我:00:00:42.62

在第二种情况下,每次迭代都有Get访问器+指向string的新指针,因此速度较慢。

希望对你有帮助。

编辑

我将所有代码放入迭代中。

我不认为这将使任何差异,如果编译器优化是在,但你可以测试这个。只需使用StopWatch类将代码重复几百万次,即可测量总操作的时间。

我认为第二种选择更快。读取属性就是执行一个读取文本框值的函数。它有可能被优化掉,另一方面,在循环执行时,值也有可能发生变化,因此每次读取属性时都需要检查。