Está en la página 1de 3

Utilizar constructores (Gua de programacin de C#)

1 de 3

http://msdn.microsoft.com/es-es/library/ms173115.aspx

Este artculo se tradujo de forma manual. Mueva el puntero sobre las frases del artculo para ver el texto original. Ms informacin.

Traduccin

Original

Utilizar constructores (Gua de programacin de C#)


Visual Studio 2013

Este tema an no ha recibido ninguna valoracin

Cuando se crea clase o struct, se llama al constructor. Los constructores tienen el mismo nombre que la clase o struct, e inicializan normalmente los miembros
de datos del nuevo objeto.
En el ejemplo siguiente, una clase denominada Taxi se define mediante un constructor simple. Esta clase crea instancias con el operador new. El operador new
invoca el constructor Taxi inmediatamente despus de asignar la memoria al nuevo objeto.
C#

public class Taxi


{
public bool isInitialized;
public Taxi()
{
isInitialized = true;
}
}
class TestTaxi
{
static void Main()
{
Taxi t = new Taxi();
Console.WriteLine(t.isInitialized);
}
}

Un constructor que no toma ningn parmetro se denomina constructor predeterminado. Los constructores predeterminados se invocan cada vez que se crea
una instancia de un objeto mediante el operador new y no se proporciona ningn argumento a new. Para obtener ms informacin, vea Constructores de
instancias (Gua de programacin de C#).
A menos que la clase sea esttica, a las clases sin constructores se les asigna un constructor pblico predeterminado a travs del compilador de C# con el fin de
habilitar la creacin de instancias de clases. Para obtener ms informacin, vea Clases estticas y sus miembros (Gua de programacin de C#).
Es posible evitar que se creen instancias de una clase mediante la conversin del constructor a privado, como se muestra a continuacin:
C#

class NLog
{
// Private Constructor:
private NLog() { }
public static double e = Math.E;

//2.71828...

Para obtener ms informacin, vea Constructores privados (Gua de programacin de C#).


Los constructores para los tipos struct son similares a los constructores de clases, pero los tipos structs no pueden contener un constructor predeterminado
explcito porque el compilador proporciona uno automticamente. Este constructor inicializa cada campo del tipo struct con los valores predeterminados. Para
obtener ms informacin, vea Tabla de valores predeterminados (Referencia de C#). Sin embargo, este constructor predeterminado slo se invoca si se crean
instancias del tipo struct con new. Por ejemplo, en este cdigo se utiliza el constructor predeterminado para Int32, lo que garantiza la inicializacin del tipo
entero:

int i = new int();


Console.WriteLine(i);

Sin embargo, el cdigo siguiente genera un error del compilador porque no usa new e intenta utilizar un objeto que no se ha inicializado:

int i;
Console.WriteLine(i);

Como alternativa, se pueden inicializar objetos basados en structs (incluidos todos los tipos numricos integrados) o asignarse y, a continuacin, utilizarse
como en el ejemplo siguiente:

int a = 44; // Initialize the value type...


int b;
b = 33;
// Or assign it before using it.
Console.WriteLine("{0}, {1}", a, b);

26/11/2014 06:39 p.m.

Utilizar constructores (Gua de programacin de C#)

2 de 3

http://msdn.microsoft.com/es-es/library/ms173115.aspx

En consecuencia no se requiere llamar al constructor predeterminado para un tipo de valor.


Tanto las clases como las structs pueden definir constructores que acepten parmetros. Se debe llamar a constructores que toman parmetros a travs de una
instruccin new o base. Las clases y las structs tambin pueden definir varios constructores y no se requiere ninguno para definir un constructor
predeterminado. Por ejemplo:
C#

public class Employee


{
public int salary;
public Employee(int annualSalary)
{
salary = annualSalary;
}
public Employee(int weeklySalary, int numberOfWeeks)
{
salary = weeklySalary * numberOfWeeks;
}
}

Esta clase se puede crear mediante cualquiera de las siguientes instrucciones:


C#

Employee e1 = new Employee(30000);


Employee e2 = new Employee(500, 52);

Cualquier constructor puede utilizar la palabra clave base para llamar al constructor de una clase base. Por ejemplo:
C#

public class Manager : Employee


{
public Manager(int annualSalary)
: base(annualSalary)
{
//Add further instructions here.
}
}

En este ejemplo, se llama al constructor de la clase base antes de ejecutar el bloque del constructor. La palabra clave base se puede utilizar con o sin
parmetros. Cualquier parmetro del constructor se puede utilizar como parmetro de base o como parte de una expresin. Para obtener ms informacin, vea
base (Referencia de C#).
En una clase derivada, si no se llama explcitamente al constructor de la clase base mediante la palabra clave base, se llamar implcitamente al constructor
predeterminado, si existe alguno. Esto significa que las siguientes declaraciones del constructor son efectivamente las mismas:
C#

public Manager(int initialdata)


{
//Add further instructions here.
}

C#

public Manager(int initialdata)


: base()
{
//Add further instructions here.
}

Si una clase base no proporciona un constructor predeterminado, la clase derivada debe realizar una llamada explcita a un constructor base mediante base.
Un constructor puede invocar a otro constructor en el mismo objeto mediante la palabra clave this. Al igual que base, this se puede utilizar con o sin
parmetros y cualquier parmetro en el constructor est disponible como parmetro para this o como parte de una expresin. Por ejemplo, el segundo
constructor del ejemplo anterior se puede rescribir con this:
C#

public Employee(int weeklySalary, int numberOfWeeks)

26/11/2014 06:39 p.m.

Utilizar constructores (Gua de programacin de C#)

3 de 3

http://msdn.microsoft.com/es-es/library/ms173115.aspx

: this(weeklySalary * numberOfWeeks)
{
}

El uso de la palabra clave this en el ejemplo anterior hace que se llame a este constructor:
C#

public Employee(int annualSalary)


{
salary = annualSalary;
}

Los constructores se pueden marcar como public, private, protected, internal o protectedinternal. Estos modificadores de acceso definen cmo los usuarios de
la clase pueden construir la clase. Para obtener ms informacin, vea Modificadores de acceso (Gua de programacin de C#).
Un constructor se puede declarar como esttico mediante la palabra clave static. Se llama automticamente a los constructores estticos de forma inmediata
antes de que se tenga acceso a cualquier campo esttico, y, generalmente, se utilizan para inicializar los miembros de clase estticos. Para obtener ms
informacin, vea Constructores estticos (Gua de programacin de C#).

Especificacin del lenguaje C#


Para obtener ms informacin, consulte la Especificacin del lenguaje C#. La especificacin del lenguaje es la fuente definitiva de la sintaxis y el uso de C#.

Vea tambin
Referencia
Clases y structs (Gua de programacin de C#)
Constructores (Gua de programacin de C#)
Destructores (Gua de programacin de C#)

Conceptos
Gua de programacin de C#

Adiciones de comunidad
2014 Microsoft

26/11/2014 06:39 p.m.

También podría gustarte