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
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!