例如:在方法中创建它并将其分配给字段。将该字段传递给方法,然后将其分配给 using 语句的变量(这是唯一Dispose
被调用的)。
SqlCommand CreateSqlCommand()
{
SqlCommand cmd1 = new SqlCommand();
return cmd1;
}
void UseSqlCommand(SqlCommand cmd4)
{
using (SqlCommand cmd3 = cmd4)//Is this using-statement enough?
{
//use cmd3 here...
}
}
并使用:
SqlCommand cmd2 = CreateSqlCommand();
UseSqlCommand(cmd2);
额外细节:GC 是否会在下一轮收集所有这些变量?为什么不 -在这里查看 David M. Kean 的回答。
编辑
我已经添加
cmd2.CommandText = "";
在上(最后)行之后。并且没有抛出错误。
为什么?它应该已经被处理掉了!没关系。可以引用已处置的对象...
请不要专注于示例,而应专注于问题本身。谢谢。