23

可能重复:
使用带有多个变量的语句

我有几个一次性对象要管理。CA2000 规则要求我在退出范围之前处置我的所有对象。.Dispose()如果我可以使用 using 子句,我不喜欢使用该方法。在我的具体方法中,我应该使用以下方法编写许多使用:

using (Person person = new Person()) {
    using (Adress address = new Address()) { 
        // my code
    }
}

是否可以用另一种方式写这个,比如:

using (Person person = new Person(); Adress address = new Address())
4

4 回答 4

30

您可以在一个语句中声明两个或多个对象using(以逗号分隔)。缺点是它们必须是同一类型。

合法的:

using (Person joe = new Person(), bob = new Person())

非法的:

using (Person joe = new Person(), Address home = new Address())

您能做的最好的事情就是嵌套 using 语句。

using (Person joe = new Person())
using (Address home = new Address())
{
  // snip
}
于 2012-12-13T15:41:04.037 回答
20

你能做的最好的事情是:

using (Person person = new Person())
using (Address address = new Address())
{ 
    // my code
}
于 2012-12-13T15:37:31.710 回答
8

可以

using (IDisposable iPerson = new Person(), iAddress = new Address())
{
    Person person = (Person)iPerson;
    Address address = (Address)iAddress;
    //  your code
}

但这几乎没有改善。

于 2012-12-13T15:44:35.860 回答
6

如果它们属于同一类型,则只能在单个 using 语句中使用多个对象。您仍然可以嵌套 using 不带括号的语句。

using (Person person = new Person())
using (Address address = new Address())
{

}

这是一个多对象的示例,相同类型的 using 语句:

using (Person p1 = new Person(), p2 = new Person())
{

}
于 2012-12-13T15:39:55.417 回答