首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

petshop里步骤的局部变量

2012-08-31 
petshop里方法的局部变量最近没事在看petshop案例,觉得有一点不是很明白。疑问SQHelper类下面的ExecuteNonQ

petshop里方法的局部变量
最近没事在看petshop案例,觉得有一点不是很明白。

疑问

SQHelper类下面的ExecuteNonQuery方法里有这句"cmd.Parameters.Clear();"

个人觉得因为cmd这个对象是在方法里声明的,意味着方法执行完之后,它会自动的销毁,这样的话它里面的Parameters应该也会一起销毁掉,那上面这一句是不是有点多余?




  public static int ExecuteNonQuery(string connectionString, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters) {

  SqlCommand cmd = new SqlCommand();

  using (SqlConnection conn = new SqlConnection(connectionString)) {
  PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);
  int val = cmd.ExecuteNonQuery();
  cmd.Parameters.Clear();
  return val;
  }
  }


[解决办法]
cmd是方法内定义的局部变量,每次执行方法都会创建新的Parameters,所以个人认为cmd.Parameters.Clear();应该是多余的。
[解决办法]
至少不应该认为是多余的,有几个人会在用完一个实例后,执行dispose呢,都会偷懒交给系统自己去处理,这是很不好的习惯

cmd.Parameters.Clear,可能会调用Parameters的析构函数去释放一些内存,防止内存泄露

热点排行