Constructores (Guía de programación de C#)Constructors (C# Programming Guide)

Cada vez que se crea una clase o struct, se llama a su constructor.Whenever a class or struct is created, its constructor is called. Una clase o struct puede tener varios constructores que toman argumentos diferentes.A class or struct may have multiple constructors that take different arguments. Los constructores permiten al programador establecer valores predeterminados, limitar la creación de instancias y escribir código flexible y fácil de leer.Constructors enable the programmer to set default values, limit instantiation, and write code that is flexible and easy to read. Para obtener más información y ejemplos, vea Usar constructores y Constructores de instancias.For more information and examples, see Using Constructors and Instance Constructors.

Constructores predeterminadosDefault constructors

Si no proporciona un constructor para la clase, C# creará uno de manera predeterminada que cree instancias del objeto y establezca las variables miembro en los valores predeterminados que se indican en Tabla de valores predeterminados.If you don't provide a constructor for your class, C# creates one by default that instantiates the object and sets member variables to the default values as listed in the Default Values Table. Si no proporciona un constructor para su struct, C# se basa en un constructor predeterminado implícito para inicializar automáticamente cada campo de un tipo de valor en su valor predeterminado como se muestra en la Tabla de valores predeterminados.If you don't provide a constructor for your struct, C# relies on an implicit default constructor to automatically initialize each field of a value type to its default value as listed in the Default Values Table. Para obtener más información y ejemplos, vea Constructores de instancias.For more information and examples, see Instance Constructors.

Sintaxis del constructorConstructor syntax

Un constructor es un método cuyo nombre es igual que el nombre de su tipo.A constructor is a method whose name is the same as the name of its type. Su firma del método incluye solo el nombre del método y su lista de parámetros; no incluye un tipo de valor devuelto.Its method signature includes only the method name and its parameter list; it does not include a return type. En el ejemplo siguiente se muestra el constructor de una clase denominada Person.The following example shows the constructor for a class named Person.

public class Person
{
   private string last;
   private string first;
   
   public Person(string lastName, string firstName)
   {
      last = lastName;
      first = firstName;
   }
   
   // Remaining implementation of Person class.
}

Si un constructor puede implementarse como una instrucción única, puede usar una definición del cuerpo de expresión.If a constructor can be implemented as a single statement, you can use an expression body definition. En el ejemplo siguiente se define una clase Location cuyo constructor tiene un único parámetro de cadena denominado name.The following example defines a Location class whose constructor has a single string parameter named name. La definición del cuerpo de expresión asigna el argumento al campo locationName.The expression body definition assigns the argument to the locationName field.

public class Location
{
   private string locationName;
   
   public Location(string name) => Name = name;

   public string Name
   {
      get => locationName;
      set => locationName = value;
   } 
}

Constructores estáticosStatic constructors

En los ejemplos anteriores se han mostrado constructores de instancia, que crean un objeto nuevo.The previous examples have all shown instance constructors, which create a new object. Una clase o struct también puede tener un constructor estático, que inicializa los miembros estáticos del tipo.A class or struct can also have a static constructor, which initializes static members of the type. Los constructores estáticos no tienen parámetros.Static constructors are parameterless. Si no proporciona un constructor estático para inicializar los campos estáticos, el compilador de C# proporcionará un constructor estático predeterminado que inicializa los campos estáticos en su valor predeterminado como se muestra en la Tabla de valores predeterminados.If you don't provide a static constructor to initialize static fields, the C# compiler will supply a default static constructor that initializes static fields to their default value as listed in the Default Values Table.

En el ejemplo siguiente se usa un constructor estático para inicializar un campo estático.The following example uses a static constructor to initialize a static field.

public class Adult : Person
{
   private static int minimumAge;
   
   public Adult(string lastName, string firstName) : base(lastName, firstName)
   { }

   static Adult()
   {
      minimumAge = 18;
   }

   // Remaining implementation of Adult class.
}

También puede definir un constructor estático con una definición de cuerpo de expresión, como se muestra en el ejemplo siguiente.You can also define a static constructor with an expression body definition, as the following example shows.

public class Child : Person
{
   private static int maximumAge;
   
   public Child(string lastName, string firstName) : base(lastName, firstName)
   { }

   static Child() => maximumAge = 18;

   // Remaining implementation of Child class.
}

Para obtener más información y ejemplos, vea Constructores estáticos.For more information and examples, see Static Constructors.

En esta secciónIn This Section

Utilizar constructoresUsing Constructors

Constructores de instanciasInstance Constructors

Constructores privadosPrivate Constructors

Constructores estáticosStatic Constructors

Cómo: Escribir un constructor CopyHow to: Write a Copy Constructor

Vea tambiénSee Also