因为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
}
因为我需要处理的只是连接而不是命令,但除此之外.
在ASP.NET中与数据库交互的例子我总是看到
using ( SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["MyDatabase"].ConnectionString) )
{
   // ... Do some stuff
}
但我想知道,我不应该一直连接吗?为什么我想要打开和关闭连接所涉及的所有开销是没有意义的.不con应该像static我的模特的成员?