What is the difference between this initialization methods?

.net, c#

Solution

There is almost not difference between them. The assignment of the field will happen within the constructor in both cases. There is a difference in how this happpens in relation to base class constructors though. Take the following code:

class Base
{
    public Base()
    {

    }
}

class One : Base
{
    string test = "text";
}

class Two : Base
{
    string test;
    public Two()
    {
        test = "text";
    }
}

In this case the base class constructor will be invoked after the field assignment in the class `One`, but before the assignment in class `Two`.

Problem

What is the difference between this two codes? ``` class SomeClass { SomeType val = new SomeType(); } ``` and ``` class SomeClass { SomeType val; SomeClass() { val = new SomeType(); } } ``` Which method is preferd?

Original source