Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Construtores de Struct | Structs e Enumeradores
C# Além do Básico

bookConstrutores de Struct

Um construtor é um método que é executado automaticamente quando um novo objeto é criado.

A sintaxe de um construtor é semelhante à de um método, basta omitir o returnType, pois um construtor não retorna nenhum valor:

index.cs

index.cs

copy
1234567891011
struct structureName { // ... fields (optional) public structureName(parameter1, parameter2, ...) { // code } // ... methods (optional) }

Os seguintes pontos são importantes sobre a sintaxe do construtor:

  1. O nome do construtor é o mesmo que o nome da estrutura;
  2. Um construtor não possui valor de retorno.

O programa a seguir demonstra como o construtor é chamado sempre que um objeto é criado:

index.cs

index.cs

copy
12345678910111213141516171819
using System; struct Player { public Player() { Console.WriteLine($"New Player Object Created"); } } class Program { static void Main(string[] args) { Player player1 = new Player(); Player player2 = new Player(); Player player3 = new Player(); } }
Note
Nota

Caso esteja utilizando uma versão do C# anterior ao C# 10, pode ocorrer um erro em tempo de compilação. Recomenda-se utilizar o C# 10 ou uma versão mais recente. Se não desejar migrar para uma versão mais nova, é importante observar que o uso de construtores será mais limitado. Por exemplo, não é possível criar um construtor sem parâmetros em versões antigas.

Vamos adicionar um campo ao Player chamado id, que será um identificador único desse objeto, de modo que cada objeto terá um valor diferente para id. Ele começará em 0 e será incrementado. Para isso, é necessário criar uma variável global chamada totalPlayers.

index.cs

index.cs

copy
12345678910111213141516171819202122232425262728
using System; class ConsoleApp { // We use the term 'static' when declaring variables directly under class // This will be explained in much more detail in later sections. public static int totalPlayers = 0; // This time we create put the struct inside the `ConsoleApp` class // This is to be able to use the `totalPlayers` variable easily. struct Player { public int id; public Player() { id = totalPlayers++; Console.WriteLine($"New Player Object Created With ID {id}"); } } static void Main(string[] args) { Player player1 = new Player(); Player player2 = new Player(); Player player3 = new Player(); } }

No código acima, a struct foi colocada dentro da classe Program para permitir o acesso à variável 'totalPlayers' a partir do construtor.

É possível passar dados para um construtor ao criar um novo objeto utilizando a seguinte sintaxe:

structureName variableName = new structureName(argument1, argument2, …);

A seguir, um exemplo prático de uso:

index.cs

index.cs

copy
1234567891011121314151617181920212223242526272829
using System; struct Coordinate3D { public double x; public double y; public double z; public Coordinate3D(double x, double y, double z) { this.x = x; this.y = y; this.z = z; } public void displayValue() { Console.WriteLine($"{this.x}, {this.y}, {this.z}"); } } class ConsoleApp { static void Main(string[] args) { Coordinate3D coord1 = new Coordinate3D(3, 5, 7); coord1.displayValue(); } }

Vamos analisar o código passo a passo.

Primeiro, foi criado um construtor e, dentro dele, os valores passados x, y, z foram atribuídos aos campos x, y e z:

index.cs

index.cs

copy
123456
public Coordinate3D(double x, double y, double z) { this.x = x; this.y = y; this.z = z; }

Dentro do método Main, foi criado um novo objeto Coordinate3D e passados 3, 5 e 7 como x, y e z através do construtor.

index.cs

index.cs

copy
1
Coordinate3D coord1 = new Coordinate3D(3, 5, 7);

Para confirmar se os campos foram iniciados com sucesso pelo construtor ou não, utilizou-se o método displayValue:

index.cs

index.cs

copy
1
coord1.displayValue();

A saída comprovou que os campos foram atualizados com sucesso.

Os construtores são muito úteis quando se deseja iniciar objetos com determinados dados ou realizar algumas operações iniciais quando um objeto é criado.

question mark

Quando os construtores são chamados?

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 2. Capítulo 8

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

Awesome!

Completion rate improved to 2.04

bookConstrutores de Struct

Deslize para mostrar o menu

Um construtor é um método que é executado automaticamente quando um novo objeto é criado.

A sintaxe de um construtor é semelhante à de um método, basta omitir o returnType, pois um construtor não retorna nenhum valor:

index.cs

index.cs

copy
1234567891011
struct structureName { // ... fields (optional) public structureName(parameter1, parameter2, ...) { // code } // ... methods (optional) }

Os seguintes pontos são importantes sobre a sintaxe do construtor:

  1. O nome do construtor é o mesmo que o nome da estrutura;
  2. Um construtor não possui valor de retorno.

O programa a seguir demonstra como o construtor é chamado sempre que um objeto é criado:

index.cs

index.cs

copy
12345678910111213141516171819
using System; struct Player { public Player() { Console.WriteLine($"New Player Object Created"); } } class Program { static void Main(string[] args) { Player player1 = new Player(); Player player2 = new Player(); Player player3 = new Player(); } }
Note
Nota

Caso esteja utilizando uma versão do C# anterior ao C# 10, pode ocorrer um erro em tempo de compilação. Recomenda-se utilizar o C# 10 ou uma versão mais recente. Se não desejar migrar para uma versão mais nova, é importante observar que o uso de construtores será mais limitado. Por exemplo, não é possível criar um construtor sem parâmetros em versões antigas.

Vamos adicionar um campo ao Player chamado id, que será um identificador único desse objeto, de modo que cada objeto terá um valor diferente para id. Ele começará em 0 e será incrementado. Para isso, é necessário criar uma variável global chamada totalPlayers.

index.cs

index.cs

copy
12345678910111213141516171819202122232425262728
using System; class ConsoleApp { // We use the term 'static' when declaring variables directly under class // This will be explained in much more detail in later sections. public static int totalPlayers = 0; // This time we create put the struct inside the `ConsoleApp` class // This is to be able to use the `totalPlayers` variable easily. struct Player { public int id; public Player() { id = totalPlayers++; Console.WriteLine($"New Player Object Created With ID {id}"); } } static void Main(string[] args) { Player player1 = new Player(); Player player2 = new Player(); Player player3 = new Player(); } }

No código acima, a struct foi colocada dentro da classe Program para permitir o acesso à variável 'totalPlayers' a partir do construtor.

É possível passar dados para um construtor ao criar um novo objeto utilizando a seguinte sintaxe:

structureName variableName = new structureName(argument1, argument2, …);

A seguir, um exemplo prático de uso:

index.cs

index.cs

copy
1234567891011121314151617181920212223242526272829
using System; struct Coordinate3D { public double x; public double y; public double z; public Coordinate3D(double x, double y, double z) { this.x = x; this.y = y; this.z = z; } public void displayValue() { Console.WriteLine($"{this.x}, {this.y}, {this.z}"); } } class ConsoleApp { static void Main(string[] args) { Coordinate3D coord1 = new Coordinate3D(3, 5, 7); coord1.displayValue(); } }

Vamos analisar o código passo a passo.

Primeiro, foi criado um construtor e, dentro dele, os valores passados x, y, z foram atribuídos aos campos x, y e z:

index.cs

index.cs

copy
123456
public Coordinate3D(double x, double y, double z) { this.x = x; this.y = y; this.z = z; }

Dentro do método Main, foi criado um novo objeto Coordinate3D e passados 3, 5 e 7 como x, y e z através do construtor.

index.cs

index.cs

copy
1
Coordinate3D coord1 = new Coordinate3D(3, 5, 7);

Para confirmar se os campos foram iniciados com sucesso pelo construtor ou não, utilizou-se o método displayValue:

index.cs

index.cs

copy
1
coord1.displayValue();

A saída comprovou que os campos foram atualizados com sucesso.

Os construtores são muito úteis quando se deseja iniciar objetos com determinados dados ou realizar algumas operações iniciais quando um objeto é criado.

question mark

Quando os construtores são chamados?

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 2. Capítulo 8
some-alt