通过声明循环外的对象是否有任何性能提升

Der*_*rin 5 c# performance

我有一个代码,我在循环中声明一个对象,如:

foreach(...)
{
ClassA clA = new ClassA();
clA.item1=1;
clA.item2=2;
ClassB.Add(clA);
}
Run Code Online (Sandbox Code Playgroud)

如果我按如下方式修改代码,是否会有任何性能提升:

ClassA clA;
foreach(...)
{
clA = new ClassA();
clA.item1=1;
clA.item2=2;
ClassB.Add(clA);
}
Run Code Online (Sandbox Code Playgroud)

提前致谢.

Sac*_*hag 4

本身并没有任何性能提升。它只会帮助变量晚点超出范围而不是早点超出范围。

  • 如果在循环后不使用变量,则作用域纯粹是词法的,即。您可以编写代码以在更多地方使用它。然而,对于 GC 来说,这没有什么区别(至少在没有附加调试器的发布版本中),GC 可以在循环完成后立即回收内存。 (2认同)