在使用语句(C#)中使用各种类型

因为C#使用语句只是一个语法糖为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
}

因为我需要处理的是连接,而不是命令,但这是除了点。

你可以这样做:

using (IDisposable cmd = new SqlCommand(), con = (cmd as SqlCommand).Connection)
{
   var command = (cmd as SqlCommand);
   var connection = (con as SqlConnection);
   //code
}

也许这将是令人满意的。

翻译自:https://stackoverflow.com/questions/966086/using-various-types-in-a-using-statement-c

转载注明原文:在使用语句(C#)中使用各种类型