Язык предназначен для отделения ваших «вещей» (полей классов и свойств классов) от того, как их использовать (методы). Однако некоторые вещи являются просто синтаксическим сахаром , что позволяет вам быть более кратким.
Фактически, ваш код
Class Program
{
Dub obj=new Dub()
}
функционально (и семантически) эквивалентенэто
Class Program
{
Dub obj;
public Program()
{
obj = new Dub();
}
}
, потому что оно объявляет поле (Dub obj
- это часть кода, которая делает это), а затем инициализирует его при создании (= new Dub()
- это то, как вы говорите, что хотите, чтобы оно было инициализировано).
Вы можете задаться вопросом, почему у вас есть два способа сделать одно и то же, но дело в том, что то, что вы пишете в инициализаторе, должно быть выражением , которое можно назначить полюкоторый инициализируется. Это ограниченная вещь, которую вы можете использовать, чтобы иметь меньше кода для написания и просмотра, когда все просто. Если это не подходит, вы можете использовать конструктор, где вы можете делать все причудливые вещи, которые не разрешены в инициализаторе.
Проще говоря, Инструкции являются практически неограниченными утверждениямикоторые могут быть использованы внутри методов. выражение является инструкцией, но не наоборот. Для инициализаторов требуется выражений .
Для получения дополнительной информации об инициализаторах вы можете обратиться к Полевая документация MSDN , где все объясняется более подробно и с примерами.