elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Tutorial básico de Quickjs


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Array de structs duda con los nombres C#
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Array de structs duda con los nombres C#  (Leído 3,093 veces)
RevolucionVegana


Desconectado Desconectado

Mensajes: 477



Ver Perfil
Array de structs duda con los nombres C#
« en: 2 Junio 2017, 21:19 pm »

Hola a todos tengo un programa que permite al usuario introducir datos y estos deben ser almacenados en structs, vale hasta aquí no hay problema si se la cantidad de structs que va a utilizar el usuario por ejemplo 3 structs los declaro y después solo tendría que ir asignando la cuestión está en que no sabré cuantos struct introducirá el usuario entonces mi duda viene en que como puedo crear los struct en tiempo de ejecución con el nombre que introduzca el usuario es decir, no se como puedo hacer para darle nombre a un struct o a una variable en tiempo de ejecución y que sea un nombre que por ejemplo haya sido recogido en una variable (por poner un ejemplo), no se si es con eso del preprocesador ese o creando una clase y crear instancias y jugar con eso, en fin cuál sería la forma correcta de hacer esto? Gracias y un saludo es en C#


En línea

HAS DICHO ALGO NENAAAAAA?!
Serapis
Colaborador
***
Desconectado Desconectado

Mensajes: 3.348


Ver Perfil
Re: Array de structs duda con los nombres C#
« Respuesta #1 en: 2 Junio 2017, 22:50 pm »

A ver... debe quedarte claro, que parte corresponde al programador y qué parte al usuario.
Es tarea del programador definir las estructuras de datos que debe tener el programa, y no el usuario. Al usuario debe importarle 4 ëggs, como llames tú a tus variables. Al usuario solo debe importarle que pueda almacenar, usar los datos, que funcione bien y punto.

Y en cuanto a tu duda, simplemente decirte que cuanto menos claro quede el tipo de datos que deba usar el usuario, más abstracta debe ser tu solución.

Hay excepciones obvias, como por ejemplo las bases de datos. Una tabla debe tener un nombre que el usuario (cliente), le indique u oriente que contiene esa tabla.
Ahora bien, en estos casos, el programador se pone codo con codo con el cliente, recogiendo las especificaciones que el cliente quiere que recoja el programa encargado y por tanto desde un inicio quedan claras las cosas.

En general para almacenar datos de cualquier tipo, suele ser útil una colección genérica tipo tabla-hash, junto a los datos a guardar se usa una clave (que si puede elegir el usuario) y que sirve para recoger después esos datos de nuevo.
Si el programa ha de utilizar varios y diferentes tipos de datos, lo adecuado es encapsular cada uno de ellos en una clase concreta que opere con dichos datos. es decir en vez de generar una estructura generas una clase. La clase ha de contener la funcionalidad adecuada para operar con dichos datos.

Por ejemplo: Si tenemos unos datos como: nombre, edad, calle, ciudad, nº identificación, etc... la clase que albergue dichos datos debería tener una propiedad para cada dato, alguno quizás sea de solo lectura, porque se genere internamente o porque puede que se establezca solo al crearse la clase... dicha funcionalidad debería también proveer la interfaz para rellenar un formulario con los datos y para presentarlos, también para buscar si debe haber más de una instancia de esa clase.
En cambio, si hay datos como Imagen, ruta, AnchoImagen, Altoimagen, parece obvio, que debe ser creada otra clase que albergue dichos datos, y la funcionalidad será del tipo, zoom, CargarImagen, SalvarImagen, y seguramente una ventana donde se vea la imagen y contenga Zoom, Brillo, Contraste, etc...
...pero para poder hacer todo esto, lógicamente debe ser desde un principio que quede especificado. No tiene sentido que crees un programa de control de stock de un almacén y que luego te digan que 'no tiene juego' para pasar el tiempo cuando no hay nada que hacer...


En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.788



Ver Perfil
Re: Array de structs duda con los nombres C#
« Respuesta #2 en: 3 Junio 2017, 05:31 am »

Hola a todos tengo un programa que permite al usuario introducir datos y estos deben ser almacenados en structs, vale hasta aquí no hay problema si se la cantidad de structs que va a utilizar el usuario por ejemplo 3 structs los declaro y después solo tendría que ir asignando la cuestión está en que no sabré cuantos struct introducirá el usuario entonces mi duda viene en que como puedo crear los struct en tiempo de ejecución con el nombre que introduzca el usuario es decir, no se como puedo hacer para darle nombre a un struct o a una variable en tiempo de ejecución y que sea un nombre que por ejemplo haya sido recogido en una variable (por poner un ejemplo), no se si es con eso del preprocesador ese o creando una clase y crear instancias y jugar con eso, en fin cuál sería la forma correcta de hacer esto? Gracias y un saludo es en C#

Estás contando la forma en la que has decidido resolver un problema, es decir estás explicando la solución que tienes pensada, pero no has mencionado cual es el problema que te ha llevado a enfocarte en esa solución...

A mi no me cuentes eso, da detalles claros y específicos. :P Cuéntanos el propósito que hay detrás de lo que estás intentando hacer, es decir, ¿con que intención quieres hacer eso, que es lo que quieres resolver haciendo eso y de esa manera en específico?, y no me digas que el motivo es "para poder introducir datos"  :P. Más que nada si insisto en que des esta información (por que nunca la das) es por que puede que explicándonos el problema podamos hallar una solución más...óptima a las circunstancias y a tus necesidades reales.

De todas formas, respondiendo a tus dudas y extendiendo la respuesta del compañero @NEBIRE:

Para declarar un array de estructuras de tamaño "indeterminado" cuyo tamaño lo determinas en tiempo de ejecución, pues tan solo tienes que declararlo e inicializarlo de la siguiente manera:
Código
  1. int structSize = 10;
  2. ValueType[] structs = new ValueType[structSize];
...Donde el valor de la variable structSize lo proveería el usuario en tiempo de ejecución mediante tu interfáz gráfica o como sea, y ya te encargarías de controlarlo como sea que lo tengas pensado hacer.

Y con respecto a la asignación de nombres dinámicos a variables, eso no es algo posible en C#, sin embargo puedes utilizar cualquiera de los tipos de estructuras de datos en .NET que implementan los principios de un Array Asociativo, una estructura de datos de tipo key/value. por ejemplo una colección que implemente la interfáz IDictionary o ICollection<KeyValuePair<TKey, TValue>> para permitirte asignarle identificadores/keys cuyos nombres sean creados de forma dinámica en tiempo de ejecución. Por ejemplo puedes usar el tipo SortedDictionary<TKey, TValue>:

Código
  1. int structSize = 10;
  2.  
  3. int keyIndex = 1;
  4. string keyName = string.Format("Key{0}", keyIndex); // "Key1"
  5.  
  6. Dictionary<string, ValueType[]> dict = new SortedDictionary<string, ValueType[]>(StringComparer.Ordinal);
  7. dict.Add(keyName, new ValueType[structSize]);
  8. // ...
  9.  
  10. ValueType[] structs = dict(keyName);
...Donde las variables structSize y keyIndex y/o keyName tendrian un valor dinámico cuando adaptases el código a tus necesidades.

Saludos!
« Última modificación: 3 Junio 2017, 06:44 am por Eleкtro » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Duda con ficheros y structs en C
Programación C/C++
chica_23 9 5,363 Último mensaje 19 Marzo 2011, 20:24 pm
por chica_23
Duda con structs C/C++ « 1 2 »
Programación C/C++
SARGE553413 13 7,597 Último mensaje 21 Junio 2013, 18:50 pm
por pacoperico
Imprimir array de Structs
Programación C/C++
dennis094 3 2,462 Último mensaje 17 Enero 2014, 02:09 am
por rir3760
¿Como hacer una lista de nombres usando array con lenguaje C?
Programación C/C++
alejandrodiaz 2 31,729 Último mensaje 13 Julio 2015, 18:24 pm
por alejandrodiaz
Como obtener nombres de archivos en una carpeta y agregarlos a un array | PS
Scripting
cat26 4 3,539 Último mensaje 7 Septiembre 2019, 04:40 am
por cat26
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines