В чем разница между этими методами инициализации? - PullRequest
5 голосов
/ 19 марта 2010

В чем разница между этими двумя кодами?

class SomeClass   
{   

   SomeType val = new SomeType();   

}   

и

class SomeClass  
{      
   SomeType val;   

   SomeClass()   
   {   
       val = new SomeType();   
   }   

}   

Какой метод предпочтительнее?

Ответы [ 2 ]

7 голосов
/ 19 марта 2010

Существует почти нет разницы между ними. Назначение поля будет происходить внутри конструктора в обоих случаях. Однако существует разница в том, как это работает по отношению к конструкторам базового класса. Возьмите следующий код:

class Base
{
    public Base()
    {

    }
}

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

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

В этом случае конструктор базового класса будет вызываться после назначения поля в классе One, но до назначения в классе Two.

2 голосов
/ 19 марта 2010

Первая версия позволяет вам определять несколько конструкторов, не забывая добавлять = new SomeType() в каждый из них.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...