在使用“using”块语句时使用if语句的更好方法是什么?

时间:2017-03-01 08:46:10

标签: c# winforms if-statement operators instance

我有一个场景,我有两个新对象,其中只有一个必须根据条件进行初始化。

但是我使用“using”块语句来初始化一个新对象。

我怎样才能实现它?请参考以下方案。

int a;
string b;

if()//some codition
{
    using(MyClass c1 = new MyClass(a))
    { 
            SomeMethod();
    }
}
else
{
    using(MyClass c1 = new MyClass(b)
    {
             SomeMethod();
    }
}

有没有更好的方法来实现单一条件或任何其他方式来减少代码?因为我在两种情况下都调用相同的方法。

提前致谢。

此致 阿尼什

4 个答案:

答案 0 :(得分:6)

您可以使用条件(三元)运算符。

int a;
string b;

using(MyClass c1 = (some condition) ? new MyClass(a) : new MyClass(b))
{
    SomeMethod();
}

答案 1 :(得分:2)

怎么样:

using (var c1 = condition ? new MyClass(a) : new MyClass(b))
{
    SomeMethod();
}

答案 2 :(得分:2)

  

有没有更好的方法来实现单一条件或任何其他方式来减少代码?

是的,你可以。

using (MyClass c1 = condition ? new MyClass(a) : new MyClass(b))
{
    SomeMethod();
}

?:是一个三元运算符,顾名思义,它适用于3个操作数。

答案 3 :(得分:1)

  IDisposable target = somecondition ?  new MyClass(a)  : new MyClass(b) ;
  using (IDisposable c1 = target )
  {
                SomeMethod();
  }