既然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
}
因为我只需要处理连接而不是命令,但这并不重要。