Подтвердить что ты не робот

Использовать инициализатор объектов - предложение Resharper

Я использую ReSharper каждый день, и сегодня я спросил себя, почему ReSharper предлагает "Использовать инициализатор объектов", когда я это делаю:

MyClass myClass = new MyClass();
myClass.MyInt = 0;
myClass.MyString = string.Empty;

Он заменяется на:

MyClass myClass = new MyClass
{
    MyInt = 0, 
    MyString = string.Empty
};

Это оптимизирует выполнение моего кода, или это просто вопрос переформатирования?

Лично мне это нравится. Но иногда я ненавижу это из-за этого:

Resharper

Я не могу выполнить отладку step-by-step: (

4b9b3361

Ответ 1

Вторая содержит меньше символов и поэтому более компактна для чтения. Вам не нужно повторять myClass 2 еще раз, а логика инициализации находится в одном блоке.

Это действительно синтаксический сахар, который не меняет ничего в сгенерированном коде. Если вам это не нравится, вы всегда можете отключить предупреждение в ReSharper.

Более длинная запись о преимуществах использования Инициализаторов объектов здесь:

Ответ 2

Вы можете поэтапно отлаживать частично, если инициализаторы являются вызовами функций:

MyClass c = new MyClass() 
{
    MyInt = 3,
    MyString = GenerateString(9)
};

В этом случае F11 приведет вас прямо к методу GenerateString.

EDIT: если инициализаторы являются простыми значениями, поэтапная отладка все равно бессмысленна.