gpt4 book ai didi

c# - 在 using 语句中创建的对象会怎样?

转载 作者:太空宇宙 更新时间:2023-11-03 18:29:54 24 4
gpt4 key购买 nike

我一直在努力寻找这个,但找不到答案,可能是我没有找到正确的地方,所以请多多包涵...

问题:

我知道一个using语句调用对象的dispose方法,例如:

using (SqlConnection conn = new SqlConnection(conString))
{
// some work
}
// dispose method for this connection object will be called must.

但是在这个 using 语句中创建的对象会发生什么?

using (SqlConnection conn = new SqlConnection(conString))
{
SqlCommand cmd = new SqlCommand(query, conn);
// some work
}

command对象的dispose方法会不会也被调用?或者我应该这样做:

using (SqlConnection conn = new SqlConnection(conString))
{
using (SqlCommand cmd = new SqlCommand(query, conn))
{
//some work
}
// some work
}

哪个是最佳实践,哪个更有效?

最佳答案

Will the dispose method of command object be also called?

没有

Or should I do this instead:

Which is the best practice and which one will be more efficient ?

有效的 - 最后一个。请注意,您可以避免在页面上“向右行驶”:

using (SqlConnection conn = new SqlConnection(conString))
using (SqlCommand cmd = new SqlCommand(query, conn))
{
// some work
}

懒得直接用ADO.NET了;另一种选择是获得一个工具来处理除连接之外的所有事情(显示的示例是“dapper”,但存在其他工具):

using (SqlConnection conn = new SqlConnection(conString))
{
var data = conn.Query<SomeType>(someSql, new { foo, bar }).ToList();
// where @foo and @bar are parameters in the sql
}

那么你不需要担心命令、数据读取器、参数等。

关于c# - 在 using 语句中创建的对象会怎样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24652905/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com