因为C#using语句只是try/finally {dispose}的语法糖,为什么它只接受多个对象,如果它们属于同一类型?
我不明白,因为他们需要的只是IDisposable.如果所有这些都实现了IDisposable,它应该没问题,但事实并非如此.
具体来说,我习惯写作
using (var cmd = new SqlCommand())
{
using (cmd.Connection)
{
// code
}
}
Run Code Online (Sandbox Code Playgroud)
我压缩成:
using (var cmd = new SqlCommand())
using (cmd.Connection)
{
// code
}
Run Code Online (Sandbox Code Playgroud)
我想进一步说明:
using(var cmd = new SqlCommand(), var con = cmd.Connection)
{
// code
}
Run Code Online (Sandbox Code Playgroud)
但我不能.有人会说,我可能写道:
using((var cmd = new SqlCommand()).Connection)
{
// code
}
Run Code Online (Sandbox Code Playgroud)
因为我需要处理的只是连接而不是命令,但除此之外.
如果我使用using关键字,我还需要实现IDisposable吗?