Hoy veremos cómo definir arreglos de una clase (es decir, arreglos de un objeto o de instancias de una clase) en C#.
Te mostraré cómo declarar un arreglo de objetos y cómo enviarlo a una función, así como la manera de recorrerlo. Todo esto con C sharp.
Declarar arreglo de objetos en C#
Anteriormente te enseñé a declarar arreglos en C#. La sintaxis no cambia para nada. Primero debemos definir la clase:
class Persona
{
public string nombre;
public int edad;
public Persona(string nombre, int edad)
{
this.nombre = nombre;
this.edad = edad;
}
public override string ToString()
{
return "Persona con nombre " + this.nombre + " y edad " + this.edad;
}
public void saludar()
{
Console.WriteLine("Me llamo " + this.nombre);
}
}
Es una simple clase con dos propiedades, el método ToString
sobrescrito y un método llamado saludar
. Obviamente esta clase puede ser cualquiera o puede ser una clase definida por ti.
Ahora declaramos el arreglo que va a tener instancias de nuestra clase. En este caso la clase de C# se llama Persona
así que la declaración del array queda así:
Persona[] personas = { new Persona("Luis", 24), new Persona("María", 24) };
Ya que en este caso el tipo de dato es Persona
.
Métodos con arreglos de objetos
Ya vimos la clase y vimos cómo declarar un arreglo de tipo clase o de tipo objeto. Veamos cómo se recorren y cómo se reciben como argumento en una función o método. Queda así:
static void recorrerArreglo(Persona[] personas)
{
foreach (var persona in personas)
{
Console.WriteLine("Tenemos una persona: " + persona);
persona.saludar();
}
}
Fíjate que estamos recibiendo un arreglo que vamos a llamar personas
, mismo que es de tipo Persona
. Luego lo recorremos con un for-each usando la palabra reservada var de C#, aunque en lugar de var
podría ir Persona
.
Finalmente en la línea 5 y 6 imprimimos los datos del objeto actual e invocamos a un método de la clase. Obviamente tú podrías acceder a través del índice o hacer cualquier otra cosa; esto es solo un ejemplo.
Poniendo todo junto
Si te interesa el código completo, queda así:
/*
https://parzibyte.me/blog
*/
using System;
namespace App
{
class Persona
{
public string nombre;
public int edad;
public Persona(string nombre, int edad)
{
this.nombre = nombre;
this.edad = edad;
}
public override string ToString()
{
return "Persona con nombre " + this.nombre + " y edad " + this.edad;
}
public void saludar()
{
Console.WriteLine("Me llamo " + this.nombre);
}
}
class Programa
{
static void recorrerArreglo(Persona[] personas)
{
foreach (var persona in personas)
{
Console.WriteLine("Tenemos una persona: " + persona);
persona.saludar();
}
}
static void Main(string[] args)
{
Persona[] personas = { new Persona("Luis", 24), new Persona("María", 24) };
recorrerArreglo(personas);
}
}
}