Constructores de Struct
Un constructor es un método que se ejecuta automáticamente cuando se crea un nuevo objeto.
La sintaxis de un constructor es algo similar a la de un método, simplemente se omite el returnType ya que un constructor no retorna ningún valor:
index.cs
1234567891011struct structureName { // ... fields (optional) public structureName(parameter1, parameter2, ...) { // code } // ... methods (optional) }
Los siguientes puntos son importantes sobre la sintaxis del constructor:
- El nombre del constructor es el mismo que el nombre de la estructura;
- Un constructor no tiene ningún valor de retorno.
El siguiente programa demuestra cómo se llama al constructor cada vez que se crea un objeto:
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(); } }
En caso de que esté utilizando una versión de C# anterior a C# 10
, podría obtener un error en tiempo de compilación. Se recomienda utilizar C# 10
o una versión posterior. Si no desea cambiar a una versión más reciente, es importante tener en cuenta que el uso de constructores será más limitado. Por ejemplo, no puede crear un constructor sin parámetros en versiones anteriores.
Agregue un campo a Player
llamado id
, que será un identificador único de ese objeto, por lo que cada objeto tendrá un valor diferente para id
. Comenzará desde 0
y se incrementará. Para lograr esto, debe crear una variable global llamada 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(); } }
En el código anterior, se colocó la estructura dentro de la clase Program
para poder acceder a la variable 'totalPlayers' desde el constructor.
Es posible pasar datos a un constructor al crear un nuevo objeto utilizando la siguiente sintaxis:
structureName variableName = new structureName(argument1, argument2, …);
A continuación, se muestra un ejemplo práctico de su 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(); } }
Analicemos el código paso a paso.
Primero, se creó un constructor y dentro del constructor se asignaron los valores pasados x
, y
, z
a los campos x
, y
y z
:
index.cs
123456public Coordinate3D(double x, double y, double z) { this.x = x; this.y = y; this.z = z; }
Dentro del método Main
, se creó un nuevo objeto Coordinate3D
y se pasaron 3
, 5
y 7
como x
, y
y z
a través del constructor.
index.cs
1Coordinate3D coord1 = new Coordinate3D(3, 5, 7);
Para confirmar si los campos fueron correctamente inicializados por el constructor o no, se utilizó el método displayValue
:
index.cs
1coord1.displayValue();
La salida demostró que los campos se actualizaron correctamente.
Los constructores son muy útiles cuando se desea inicializar objetos con ciertos datos o realizar algunas operaciones iniciales al crear un objeto.
¡Gracias por tus comentarios!
Pregunte a AI
Pregunte a AI
Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla
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
Constructores de Struct
Desliza para mostrar el menú
Un constructor es un método que se ejecuta automáticamente cuando se crea un nuevo objeto.
La sintaxis de un constructor es algo similar a la de un método, simplemente se omite el returnType ya que un constructor no retorna ningún valor:
index.cs
1234567891011struct structureName { // ... fields (optional) public structureName(parameter1, parameter2, ...) { // code } // ... methods (optional) }
Los siguientes puntos son importantes sobre la sintaxis del constructor:
- El nombre del constructor es el mismo que el nombre de la estructura;
- Un constructor no tiene ningún valor de retorno.
El siguiente programa demuestra cómo se llama al constructor cada vez que se crea un objeto:
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(); } }
En caso de que esté utilizando una versión de C# anterior a C# 10
, podría obtener un error en tiempo de compilación. Se recomienda utilizar C# 10
o una versión posterior. Si no desea cambiar a una versión más reciente, es importante tener en cuenta que el uso de constructores será más limitado. Por ejemplo, no puede crear un constructor sin parámetros en versiones anteriores.
Agregue un campo a Player
llamado id
, que será un identificador único de ese objeto, por lo que cada objeto tendrá un valor diferente para id
. Comenzará desde 0
y se incrementará. Para lograr esto, debe crear una variable global llamada 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(); } }
En el código anterior, se colocó la estructura dentro de la clase Program
para poder acceder a la variable 'totalPlayers' desde el constructor.
Es posible pasar datos a un constructor al crear un nuevo objeto utilizando la siguiente sintaxis:
structureName variableName = new structureName(argument1, argument2, …);
A continuación, se muestra un ejemplo práctico de su 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(); } }
Analicemos el código paso a paso.
Primero, se creó un constructor y dentro del constructor se asignaron los valores pasados x
, y
, z
a los campos x
, y
y z
:
index.cs
123456public Coordinate3D(double x, double y, double z) { this.x = x; this.y = y; this.z = z; }
Dentro del método Main
, se creó un nuevo objeto Coordinate3D
y se pasaron 3
, 5
y 7
como x
, y
y z
a través del constructor.
index.cs
1Coordinate3D coord1 = new Coordinate3D(3, 5, 7);
Para confirmar si los campos fueron correctamente inicializados por el constructor o no, se utilizó el método displayValue
:
index.cs
1coord1.displayValue();
La salida demostró que los campos se actualizaron correctamente.
Los constructores son muy útiles cuando se desea inicializar objetos con ciertos datos o realizar algunas operaciones iniciales al crear un objeto.
¡Gracias por tus comentarios!