由于 SqlConnection
和 SqlCommand
实现了 IDisposable
接口,所以我在 using
语句中对它们进行了包装。
但是,我在方法中创建它们并将它们传递到 using
语句中,因此想知道 using
的闭合括号是否会处理由方法创建的 SqlCommand
。
所以我尝试了这个:
private void button1_Click(object sender, EventArgs e)
{
SqlCommand command = new SqlCommand();
command.CommandTimeout = 10;
command.Disposed += s_Disposed;
using (SqlCommand tempCommand = command) { }//This is where even "command" is supposed to get disposed.
Text = command.CommandTimeout.ToString();
}
void s_Disposed(object sender, EventArgs e)
{
MessageBox.Show("Disposed");
}
我看到
MessageBox
已经显示,这让我感到惊讶,因为它被处理了(disposed),但文本为“10”。为什么呢?
command
和tempCommand
该怎么称呼? - ispiro