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