Construtores 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
1234567891011struct structureName { // ... fields (optional) public structureName(parameter1, parameter2, ...) { // code } // ... methods (optional) }
Os seguintes pontos são importantes sobre a sintaxe do construtor:
- O nome do construtor é o mesmo que o nome da estrutura;
- Um construtor não possui valor de retorno.
O programa a seguir demonstra como o construtor é chamado sempre que um objeto é criado:
index.cs
12345678910111213141516171819using 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(); } }
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
12345678910111213141516171819202122232425262728using 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
1234567891011121314151617181920212223242526272829using 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
123456public 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
1Coordinate3D 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
1coord1.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.
Obrigado pelo seu feedback!
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo
Can you explain more about how constructors work in different programming languages?
What happens if I don't define a constructor in my structure or class?
Can you show an example of using multiple constructors with different parameters?
Awesome!
Completion rate improved to 2.04
Construtores 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
1234567891011struct structureName { // ... fields (optional) public structureName(parameter1, parameter2, ...) { // code } // ... methods (optional) }
Os seguintes pontos são importantes sobre a sintaxe do construtor:
- O nome do construtor é o mesmo que o nome da estrutura;
- Um construtor não possui valor de retorno.
O programa a seguir demonstra como o construtor é chamado sempre que um objeto é criado:
index.cs
12345678910111213141516171819using 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(); } }
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
12345678910111213141516171819202122232425262728using 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
1234567891011121314151617181920212223242526272829using 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
123456public 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
1Coordinate3D 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
1coord1.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.
Obrigado pelo seu feedback!