C#ステートメントは try/finally{dispose} の単なる構文糖衣であるため、同じ型の場合にのみusing
複数のオブジェクトを受け入れるのはなぜですか?
必要なのは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
}
私が処分する必要があるのはコマンドではなく接続だけなので、それは重要ではありません。