我在这里找不到类似的问题,所以我要发布新的问题。 在带有计时器的c#程序中,更有效的是:
示例代码:
ClassOne
{
float mVar1 = 0;
Timer_Tick
{
mVar1 += CurrentSpeed;
SpeedOfSomething = mVar1;
}
}
OR:
ClassOne
{
Timer_Tick
{
float Var1 = 0;
Var1 += CurrentSpeed;
SpeedOfSomething = Var1;
}
}
答案 0 :(得分:0)
在第二个中:
Timer_Tick
{
float Var1 = 0;
Var1 += CurrentSpeed;
SpeedOfSomething = Var1;
}
每次Timer_Tick触发时,将执行float Var1 = 0;
,实际上Var1
的值将始终为0
。因此,这不是正确的解决方案。
答案 1 :(得分:0)
从理论上讲,优化器可以完全了解局部范围的变量的访问模式,而公共或类级别的变量可能具有多线程访问。尽管仅检查IL代码将为您提供确定的答案,但范围界定变量的基本目的是使它们对尽可能少的其他代码可见。幸运的是,在这种情况下,最严格的作用域可能是最有效的,前提是优化程序可以利用变量的完整生命周期知识来完全消除中间添加操作,并且实际上可以从预编译中完全消除变量代码。