Use object initializer - Resharper suggestion

Wassim AZIRAR picture Wassim AZIRAR · Dec 19, 2013 · Viewed 17.2k times · Source

I use ReSharper everyday, and today I asked myself why ReSharper suggests "Use object initializer" when I do this :

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

It gets replaced by :

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

Does this optimize the execution of my code, or is it just a matter of reformatting?

Personally, I like it. But sometimes I hate it, because of this :

Resharper

I can't do step-by-step debugging :(

Answer

Cyril Gandon picture Cyril Gandon · Dec 19, 2013

The second contains less characters and so is more compact to read. You don't have to repeat myClass 2 more times, and the initialization logic is in one block.

It is really a syntactic sugar that doesn't change a thing in the generated code. If you doesn't like it, you can always disable the warning on ReSharper.

A longer post on the advantages of using Object Initializers here: