3

Is there any way to refactor this code to not have to use a temporary variable and still use the syntactic sugar associated with object initializers?

FrmSomeForm someTempForm = new FrmSomeForm()
{
    SomePropA = "A",
    SomePropB = "B",
    SomePropC = "C"
};
using (FrmSomeForm someForm = someTempForm)
{
    someForm.ShowDialog();
}
Ryan Peschel
  • 11,087
  • 19
  • 74
  • 136
  • You can do a basic substitution of the `new` code block into the parentheses, but it's much cleaner the way you have it now. – Robert Harvey Oct 16 '12 at 19:54

5 Answers5

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

doesn't this work? oO

Dmytro
  • 16,668
  • 27
  • 80
  • 130
5
using (FrmSomeForm someForm = new FrmSomeForm())
{
    someForm.SomePropA = "A";
    someForm.SomePropB = "B";
    someForm.SomePropC = "C";
    someForm.ShowDialog();
}

I think that is the simplest way and even the more readable in my opinion ...

Keep things simple :-)

aleroot
  • 71,077
  • 30
  • 176
  • 213
3

Try:

        using (FrmSomeForm someForm = new FrmSomeForm()
                        {
                            SomePropA = "A",
                            SomePropB = "B",
                            SomePropC = "C"
                        })
        {
            someForm.ShowDialog();
        }
AntLaC
  • 1,215
  • 10
  • 22
0
using (FrmSomeForm someForm = new FrmSomeForm()
    {
        SomePropA = "A",
        SomePropB = "B",
        SomePropC = "C"
    })
{
    someForm.ShowDialog();
}

If you don't like the formatting, you can do something like this:

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

Or:

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

using (FrmSomeForm someForm = InitFrmSomeForm())
{
    someForm.ShowDialog();
}
Mike Marynowski
  • 3,156
  • 22
  • 32
0

You can do it like this

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