Si tengo una clase como esta:¿Hay algún beneficio o inconveniente cuando un constructor implementa otro?
public class Foo
{
public IEnumerable<Bar> Bars { get; set; }
public Foo()
{
Bars = new List<Bar>();
}
}
En algún momento me re-factor de la clase y añadir un constructor secundaria que implementa el primero de esta manera:
public class Foo
{
public IEnumerable<Bar> Bars { get; set; }
// some more properties were added
public Foo()
{
Bars = new List<Bar>();
}
public Foo(string parameter): this()
{
.... some code here
}
}
que podría tener también escrito es similar a esto:
public class Foo
{
public IEnumerable<Bar> Bars { get; set; }
// some more properties were added too
public Foo()
{
InitilizeFoo();
}
public Foo(string parameter)
{
InitilizeFoo();
.... some code here
}
private void InitializeFoo()
{
Bars = new List<Bar>();
}
}
al ver ambos enfoques de trabajo en este escenario, es que hay un beneficio o inconveniente en el uso de uno sobre el otro?
hereda constrcutors más eficiente y hacer que el código ejecuta más rápido o hay un inconveniente, que no sé acerca de hacer la segunda aplicación más eficiente en su lugar?
Uso ambos. Cuando tiene sentido encadenar a los constructores, lo hago; pero a veces (el ejemplo no viene a la mente), me he ido con el método 'InitializeFoo()' y lo llamé desde todos los constructores. – Nate
La seguridad de las excepciones es lo único de lo que me preocuparía. –