[ Foro de C# ]

Paso de un array como parametro a una funcion

12-May-2013 20:41
Fernando Fdez Cucala (+1)
4 Respuestas

Hola Nacho;

Tengo un fichero de texto en el cual guardo información que me sirve para rellenar una struct. Bien el caso es que quiero hacerlo pasandole un array de esa struct como parametro de una funcion, pero no acabo de dar con la tecla,,,

Puedes orientarme un poco?


13-May-2013 13:24
Nacho Cabanes (+30)

Deberia ser inmediato. En lenguajes antiguos como Pascal obligaba a "definir un tipo" que representaba ese array de structs, pero en lenguajes modernos como C# no debería haber mayor problema en pasar ese tipo de datos directamente:

 
int miFuncion(tipStruct[] arrayDeDatos)
 



Lo ideal es que incluyas un fragmento de programa que falle, para ver dónde está exactamente tu problema.


14-May-2013 20:30
Fernando Fdez Cucala (+1)

Lo que intento es los siguiente, llamar a una función que tengo en una clase en un fichero externo al programa, esta función leera un fichero de texto y meterá los datos en una estructura que le intento pasar como parámetro.

 
struct Datos
        {
            public string nombre
            public string categoria;
            public int salario;
 
 
 
        } // end estructura Datos
 
 
ClaseA ObDatos = new ClaseA;  //creo un objeto de la clase 
                              // donde tengo la función
 
Datos[] datos_persona = new Datos[5]; // creo un array con
                                      // el tipo estructura
 
// Llamo a la función
 
ObDatos.LeerFichero("fichero.txt",datos_persona);
 
 
// Clase ClaseA
 
 
// aquí comienza mi duda, ya que quiero que después de leer el fichero me devuelva la estructura cargada con los datos.
 


Entonces la función como debo declararla?

 
public xxxx  LeerFichero (string fichero, xxxxx)
 
{
 // y una vez termine como retorno la estructura?
 
return nombre de la estructura ????
 
}   
 




15-May-2013 16:46
Nacho Cabanes (+30)

Lo más natural es que la función devolvería un dato de ese tipo, que no aparecería como parámetro:

 
public Datos[] LeerFichero (string nombreFichero) 
{
  Datos[] misDatos = new Datos[5];
  ...
  return misDatos;
}
 



(otra alternativa más rebuscada es que lo devuelva como parámetros pasado por referencia, pero es menos legible, y sólo tiene sentido en casos puntuales y si tienes claro lo que estás haciendo, lo que puedes ganar y los riesgos que conlleva).


19-May-2013 10:23
Fernando Fdez Cucala (+1)

Ok solucionado... muchas gracias






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)