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);
        }
    }
}
Recuerda: si te gusta C# puedes aprender más en mi blog.