public void Ensamblar(Automovil[] automoviles)
Pero nosotros por alguna extraña razón, de esas que se dan en la informática, no podemos determinar de antemano cuantos instancias de Automovil vamos a enviarle al método. Por ejemplo asumamos que tenemos que hacer un recorrido de los seleccionados por el usuario, y no queremos realizar el recorrido dos veces (una para determinar el número y la segunda para cargar los objetos en el arreglo). Por lo tanto no podemos definir el tamaño del arreglo de antemano.
Una de las soluciones es utilizar ArrayList.
ArrayList ListaAutomoviles = new ArrayList ();
Así durante un solo recorrido de lo elegido por el cliente llenamos las propiedades de cada objeto Automovil (instanciado, digamos, Auto) y utilizamos la instrucción ListaAutmoviles.Add(Auto) para llenarlo. Finalmente podemos utilizar algo similar :
Autmovil[] Autos = (Autmovil [])ListaAutomoviles.ToArray(typeof(Autmovil));
Con esto creamos el arreglo tal y como nos lo pide la firma del método en cuestión. Probablemente no sea el mejor ejemplo, pero al menos muestra como funciona el método ToArray() del ArrayList.