使用语句合并/合并-C#

时间:2019-06-25 15:07:11

标签: c# .net

我在

之类的方法中有几个using语句
 public List<Object> MethodA(){

 using ( someclassTypeA var1 = IdentifierClass.Object1.createObject())
 using ( someclassTypeB var2 = IdentifierClass.Object2.createObject())
 using ( someclassTypeC var3 = IdentifierClass.Object3.createObject())
 ...
 //20 of these using statements
 ...
 //test code
}

,当我添加更多测试时,我将拥有几种类似的测试方法。因此,在一个文件中看起来不太好。

有没有一种方法可以缩短using代码,也许可以从其他类或其他类中获取using语句?

2 个答案:

答案 0 :(得分:3)

我认为您可以将所有这些都包装在共享的类中,因此您不必一遍又一遍地

public class SharedContainer : IDisposible
{
    public someclassTypeA Var1 {get;}
    public someclassTypeB Var2 {get;}
    public someclassTypeC Var3 {get;}

    public SharedContainer()
    {
       Var1 = IdentifierClass.Object1.createObject();
       Var2 = IdentifierClass.Object2.createObject();
       Var3 = IdentifierClass.Object3.createObject();
    }

    public void Dispose()
    {
       Var1.Dispose();
       Var2.Dispose();
       Var3.Dispose();
    }
}

现在,您的客户代码中只有1个using

using(var shared = new SharedContainer())
{
    shared.Var1.... // whatever
}

但是如果您需要这样做,我建议您遇到更大的问题。

答案 1 :(得分:0)

在C#8中,您可以使用一行:

using var x = IdentifierClass.Object1.createObject();
using var y = IdentifierClass.Object2.createObject();
using var z = IdentifierClass.Object3.createObject();