visual valid tag name method example documentacion comment comentarios c# optimization resharper object-initializers

c# - valid - Usar inicializador de objetos-Sugerencia para volver a compartir



tag c# (2)

Uso ReSharper todos los días, y hoy me pregunté por qué ReSharper sugiere "Usar el inicializador de objetos" cuando hago esto:

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

Se sustituye por:

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

¿Optimiza esto la ejecución de mi código, o es solo una cuestión de reformateo?

Personalmente, me gusta. Pero a veces lo odio, por esto:

No puedo hacer la depuración step-by-step :(


El segundo contiene menos caracteres y, por lo tanto, es más compacto de leer. No tiene que repetir myClass 2 más veces, y la lógica de inicialización está en un bloque.

Realmente es un azúcar sintáctico que no cambia nada en el código generado. Si no te gusta, siempre puedes desactivar la advertencia en ReSharper.

Un post más largo sobre las ventajas de usar Inicializadores de Objetos aquí:


Puede realizar la depuración paso a paso parcialmente si los inicializadores son llamadas de función:

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

En este caso, F11 lo llevará directamente al método GenerateString.

EDITAR: Si los inicializadores son valores simples, la depuración paso a paso no tiene sentido de todos modos.