viernes, septiembre 24, 2010

C#: Constructor implicito vs Contructor Explicito

Al crear una instancia de una clase o estructura, generalmente se utiliza el constructor implícito, mediante la siguiente sintaxis:

MyClass var = new MyClass();

En el caso de las clases, es posible personalizar el constructor mediante la sintaxis:

public MyClass()
{
// Aqui va el codigo de inicializacion de la clase
}

Pero en el caso de las estructuras, C# no permite crear un constructor sin parámetros, lo cual nos obligaría a incluir un parámetro "dummy" solo para saltar esta restricción:

public MyStruct(object foo)
{
// Aqui va el codigo de inicializacion
}

MyStruct var = new MyStruct(null);

Para evitar esto, podemos hacer uso de la clausula "static" para crear un constructor personalizado, el cual no requiere que se le indique ningún tipo de parámetro.

public static MyStruct New()
{
MyStruct obj = new MyStruct();
obj.Prop1 = 0;
obj.Prop2 = string.Emtpy;

return obj;
}

luego, podemos crear nuestra instancia perfectamente inicializada mediante la sintaxis:


MyStruct var = MyStruct.New();

Aun mejor, esta solución nos permite sobrecargar el constructor explicito con distintas variaciones, de acuerdo a las necesidades (cosa que no es posible con el constructor implícito).




1 comentario:

Anónimo dijo...

Hola, he tratado de correo electrónico usted en relación con este post, pero aren? T capaz de llegar. Por favor, un e-mail cuando recibe un momento. Gracias.