【问题标题】:How to use object initializers with using statements?如何将对象初始化器与 using 语句一起使用?
【发布时间】:2012-10-16 19:51:48
【问题描述】:

有什么方法可以重构这段代码,使其不必使用临时变量并仍然使用与对象初始化器相关的语法糖?

FrmSomeForm someTempForm = new FrmSomeForm()
{
    SomePropA = "A",
    SomePropB = "B",
    SomePropC = "C"
};
using (FrmSomeForm someForm = someTempForm)
{
    someForm.ShowDialog();
}

【问题讨论】:

  • 您可以将new 代码块基本替换到括号中,但现在的方式更简洁。

标签: c# refactoring using using-statement


【解决方案1】:
using (FrmSomeForm someForm = new FrmSomeForm(){
    SomePropA = "A",
    SomePropB = "B",
    SomePropC = "C"
})
{
    someForm.ShowDialog();
}

这不行吗? oO

【讨论】:

    【解决方案2】:
    using (FrmSomeForm someForm = new FrmSomeForm())
    {
        someForm.SomePropA = "A";
        someForm.SomePropB = "B";
        someForm.SomePropC = "C";
        someForm.ShowDialog();
    }
    

    我认为这是最简单的方法,而且在我看来更具可读性......

    保持简单 :-)

    【讨论】:

    • 虽然不使用对象初始化器。
    • @AndrewMartin 这个答案的重点是你不应该,也不需要。正如其他答案所示,使用它会产生更糟糕的代码。
    • 是的,我想我比对象初始化器更喜欢这个。
    【解决方案3】:

    试试:

            using (FrmSomeForm someForm = new FrmSomeForm()
                            {
                                SomePropA = "A",
                                SomePropB = "B",
                                SomePropC = "C"
                            })
            {
                someForm.ShowDialog();
            }
    

    【讨论】:

      【解决方案4】:
      using (FrmSomeForm someForm = new FrmSomeForm()
          {
              SomePropA = "A",
              SomePropB = "B",
              SomePropC = "C"
          })
      {
          someForm.ShowDialog();
      }
      

      如果你不喜欢这种格式,你可以这样做:

      using (FrmSomeForm someForm = new FrmSomeForm() { SomePropA = "A", SomePropB = "B", SomePropC = "C" })
      {
          someForm.ShowDialog();
      }
      

      或者:

      private FrmSomeForm InitFrmSomeForm()  
      {
          return new FrmSomeForm()
          {
              SomePropA = "A",
              SomePropB = "B",
              SomePropC = "C"
          };
      }
      
      using (FrmSomeForm someForm = InitFrmSomeForm())
      {
          someForm.ShowDialog();
      }
      

      【讨论】:

        【解决方案5】:

        你可以这样做

        using 
        (
            FrmSomeForm someForm = new FrmSomeForm()
            {
                SomePropA = "A",
                SomePropB = "B",
                SomePropC = "C"
            }
        )
        {
             someForm.ShowDialog();
        }
        

        【讨论】:

          猜你喜欢
          • 2019-12-03
          • 1970-01-01
          • 1970-01-01
          • 2013-06-27
          • 1970-01-01
          • 1970-01-01
          • 2018-02-03
          • 2018-04-20
          • 2018-05-07
          相关资源
          最近更新 更多