C# 在循环内或循环外声明对象

C# 在循环内或循环外声明对象,c#,performance,C#,Performance,我有一个并行循环,它检查数据库中大约1 mil条记录,并向数据库发送许多请求。我在每个并行循环迭代中重新声明新的DB对象 DataSet ds = new psqlWork().getDataSet("SELECT * FROM z_sitemap_links"); DataTable dt = ds.Tables[0]; Parallel.ForEach(dt.AsEnumerable(), dr => { new Sitemap().runSitemap(dr[1].ToStr

我有一个并行循环,它检查数据库中大约1 mil条记录,并向数据库发送许多请求。我在每个并行循环迭代中重新声明新的DB对象

DataSet ds = new psqlWork().getDataSet("SELECT * FROM z_sitemap_links");
DataTable dt = ds.Tables[0];
Parallel.ForEach(dt.AsEnumerable(), dr =>
{
    new Sitemap().runSitemap(dr[1].ToString(), counter);
    counter++;
});

new Sitemap()
对象声明在循环之外,还是每次执行都正确?

好吧,这取决于对象的功能。如果对象的状态在任何一点发生改变,它需要留在循环中。否则,您可以在外部声明它以保存一些分配

嗯,这取决于物体的功能。如果对象的状态在任何一点发生改变,它需要留在循环中。否则,您可以在外部声明它以保存一些分配

在这两种情况下,代码的含义完全不同,不确定为什么会出现“性能”问题


如果您的对象在所有迭代中共享-在外部声明并共享。否则本地声明。

在这两种情况下,代码的含义完全不同,不确定为什么会出现“性能”问题


如果您的对象在所有迭代中共享-在外部声明并共享。否则在本地声明。

我将在循环中声明它。始终在需要的准确位置声明所有内容。它使您的代码更整洁,更容易重构


如果你注意到系统速度太慢,你甚至不必考虑性能问题,然后使用分析器找出速度慢的地方,一次改进一件事。

我会在循环中声明它。始终在需要的准确位置声明所有内容。它使您的代码更整洁,更容易重构


如果你注意到系统太慢了,甚至都不用考虑性能问题,然后使用探查器找出它的慢处,一次改进一件事。

runSitemap方法是改变状态还是变为静态?runSitemap方法是改变状态还是变为静态?