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 padrãoDefault constructors

Se um construtor não for fornecido para a classe, o C# criará por padrão um construtor que instancia o objeto e define variáveis de membro para os valores padrão, conforme listado na Tabela de Valores Padrão.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. Se você não fornecer um construtor para o struct, o C# dependerá de um construtor padrão implícito para inicializar automaticamente a cada campo de um tipo de valor para o valor padrão conforme listado na Tabela de Valores Padrão.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 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, o compilador do C# fornecerá um construtor estático padrão que inicializa os campos estáticos com os respectivos valores padrão, conforme listado na Tabela de Valores Padrão.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.

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

Consulte tambémSee also