Использовать инициализатор объектов - предложение 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
: (
Ответы
Ответ 1
Вторая содержит меньше символов и поэтому более компактна для чтения. Вам не нужно повторять myClass 2 еще раз, а логика инициализации находится в одном блоке.
Это действительно синтаксический сахар, который не меняет ничего в сгенерированном коде. Если вам это не нравится, вы всегда можете отключить предупреждение в ReSharper.
Более длинная запись о преимуществах использования Инициализаторов объектов здесь:
Ответ 2
Вы можете поэтапно отлаживать частично, если инициализаторы являются вызовами функций:
MyClass c = new MyClass()
{
MyInt = 3,
MyString = GenerateString(9)
};
В этом случае F11 приведет вас прямо к методу GenerateString.
EDIT: если инициализаторы являются простыми значениями, поэтапная отладка все равно бессмысленна.