读书人

petshop里步骤的局部变量

发布时间: 2012-08-31 12:55:03 作者: rapoo

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的析构函数去释放一些内存,防止内存泄露

读书人网 >asp.net

热点推荐