Construtores (Guia de Programação em C#)Constructors (C# Programming Guide)

Sempre que uma classe ou struct é criada, o construtor é chamado.Whenever a class or struct is created, its constructor is called. Uma classe ou struct pode ter vários construtores que usam argumentos diferentes.A class or struct may have multiple constructors that take different arguments. Os construtores permitem que o programador defina valores padrão, limite a instanciação e grave códigos flexíveis e fáceis de ler.Constructors enable the programmer to set default values, limit instantiation, and write code that is flexible and easy to read. Para obter mais informações e exemplos, consulte Usando Construtores e Construtores de Instância.For more information and examples, see Using Constructors and Instance Constructors.

Construtores sem parâmetrosParameterless constructors

Se você não fornecer um construtor para sua classe, C# o criará um por padrão que instancia o objeto e define as variáveis de membro para os valores padrão, conforme listado no artigo valores padrão de C# tipos .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 of C# types article. Se você não fornecer um construtor para sua estrutura, C# o dependerá de um Construtor implícito sem parâmetros para inicializar automaticamente cada campo com seu valor padrão.If you don't provide a constructor for your struct, C# relies on an implicit parameterless constructor to automatically initialize each field to its default value. Para obter mais informações e exemplos, consulte construtores de instância.For more information and examples, see Instance constructors.

Sintaxe do construtorConstructor syntax

Um construtor é um método cujo nome é igual ao nome de seu tipo.A constructor is a method whose name is the same as the name of its type. Sua assinatura do método inclui apenas o nome do método e lista de parâmetros, ele não inclui um tipo de retorno.Its method signature includes only the method name and its parameter list; it does not include a return type. O exemplo a seguir mostra o construtor para uma classe 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.
}

Se um construtor puder ser implementado como uma única instrução, você poderá usar uma definição de corpo da expressão.If a constructor can be implemented as a single statement, you can use an expression body definition. O exemplo a seguir define uma classe Location cujo construtor tem um único parâmetro de cadeia de caracteres chamado nome.The following example defines a Location class whose constructor has a single string parameter named name. A definição de corpo da expressão atribui o argumento ao 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;
   } 
}

Construtores estáticosStatic constructors

Os exemplos anteriores têm todos os construtores de instância mostrado, que criam um novo objeto.The previous examples have all shown instance constructors, which create a new object. Uma classe ou struct também pode ter um construtor estático, que inicializa membros estáticos do tipo.A class or struct can also have a static constructor, which initializes static members of the type. Construtores estáticos não têm parâmetros.Static constructors are parameterless. Se você não fornecer um construtor estático para inicializar campos estáticos, C# o compilador inicializará campos estáticos para seu valor padrão, conforme listado no artigo valores padrão de C# tipos .If you don't provide a static constructor to initialize static fields, the C# compiler initializes static fields to their default value as listed in the Default values of C# types article.

O exemplo a seguir usa um construtor estático para inicializar um 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.
}

Você também pode definir um construtor estático com uma definição de corpo da expressão, como mostra o exemplo a seguir.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 obter mais informações e exemplos, consulte Construtores Estáticos.For more information and examples, see Static Constructors.

Nesta seçãoIn This Section

Usando construtoresUsing Constructors

Construtores de instânciaInstance Constructors

Construtores particularesPrivate Constructors

Construtores estáticosStatic Constructors

Como escrever um construtor de cópiaHow to write a copy constructor

Veja tambémSee also