我有几个可处理的一次性物品。 CA2000规则要求我在退出范围之前处置所有对象。如果我可以使用using子句,我不喜欢使用.Dispose()
方法。在我的具体方法中,我应该使用以下方法编写许多内容:
using (Person person = new Person()) {
using (Adress address = new Address()) {
// my code
}
}
是否可以用另一种方式写这个:
using (Person person = new Person(); Adress address = new Address())
答案 0 :(得分:30)
您可以在using
语句中声明两个或多个对象(以逗号分隔)。缺点是它们必须是同一类型。
<强>法律:强>
using (Person joe = new Person(), bob = new Person())
非法:强>
using (Person joe = new Person(), Address home = new Address())
您可以做的最好的事情是嵌套使用语句。
using (Person joe = new Person())
using (Address home = new Address())
{
// snip
}
答案 1 :(得分:20)
你能做的最好的事情是:
using (Person person = new Person())
using (Address address = new Address())
{
// my code
}
答案 2 :(得分:8)
你可以做
using (IDisposable iPerson = new Person(), iAddress = new Address())
{
Person person = (Person)iPerson;
Address address = (Address)iAddress;
// your code
}
但它几乎没有改善。
答案 3 :(得分:6)
如果它们属于同一类型,则只能在单个using语句中使用多个对象。您仍然可以使用不带括号的语句进行嵌套。
using (Person person = new Person())
using (Address address = new Address())
{
}
以下是使用语句的多个对象,相同类型的示例:
using (Person p1 = new Person(), p2 = new Person())
{
}