[ Foro de C# ]
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?
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.
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 ????
}
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).
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.)