【问题标题】:query about objects?查询对象?
【发布时间】:2013-03-09 04:48:33
【问题描述】:

案例一:

for(int =0;i<1000;i++)
{
 Datatable dt=new Datatable();
 //Perform some operation
 dt.Dispose();
}

案例 2:

Datatable dt=new Datatable();
for(int =0;i<1000;i++)
{
 //Perform some operation
 dt=null;
}

我想在循环中使用数据表,这种情况会更有效: 每次都在循环中创建和销毁对象,还是在循环之前创建?

【问题讨论】:

标签: c# ado.net


【解决方案1】:

案例2效率更高,但应该如下所示

Datatable dt = null;
for(int i = 0; i < 1000; i++)
{    
 dt = new Datatable();
 //Perform some operation
 dt = null;//or dt.Dispose();
} 

【讨论】:

【解决方案2】:

试试这个

编辑:如果你想保持相同的结构,那么你可以清除每个循环上的项目

Datatable dt =new Datatable();
//add columns to your datatable
for(int i=0;i<1000;i++)
{    
  dt.Items.Clear();
  //your other code
}

【讨论】:

  • rs:表结构每次都保持不变。在每次迭代中创建新的 dt 对象会不会很好?
  • 如果表结构相同,则不要使用 new 关键字........您可以删除所有行以进行下一次迭代。
【解决方案3】:

案例 2 会更有效。对象构造函数对于 CPU 来说是相对昂贵的操作。构造一个对象并为其成员赋值与销毁一个对象并构造是不同的。销毁一个对象并重新创建它相当于每次新租户搬进来时拆掉房子并重建它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-05
    • 2012-07-16
    • 2016-05-26
    • 2019-07-06
    • 2015-01-10
    相关资源
    最近更新 更多