CLR: .Net / Mono / Boo / Otros CLR > C#
Llamar a un objeto usando el nombre
cls71:
Hola,
tengo varios objetos nombrados de forma secuencial que pertenecen a una clase clObjeto.
--- Código: C# ---private clObjeto objeto1, objeto2, objeto3;objeto1 = new clObjeto();objeto2 = new clObjeto();objeto3 = new clObjeto();
No están metidos en una colección ni array.
Me gustaría usar una variable de referencia para poder apuntar a esos objetos usando su nombre.
Al estilo de algo como:
--- Código: C# ---private clObjeto variableRef;variableRef = "nombre del objeto" + n; // donde n sería el sufijo numérico
es decir, usaría la cadena alfanumérica del nombre del objeto para que la variable variableRef quedara apuntando al objeto.
¿Sabéis si esto es posible en C# ?
Sé que se puede hacer en otros lenguajes como ABAP IV, incluso javascript.
Podría resolverlo usando un array o una lista pero me gustaría hacerlo con variables sueltas si fuera posible.
Muchas gracias.
m0skit0:
En teoría si diseñas bien tu aplicación no tienes por qué necesitar hacer eso. Así mismo, si te ves en la necesidad de hacerlo, es que el diseño está mal.
Saludos
cls71:
Gracias m0skit0, pero la pregunta no era sobre el diseño, sino sobre una funcionalidad concreta que sí tienen otros lenguajes.
sabes si puede hacerse ? y en tal caso cómo se haría ?
S2
m0skit0:
Hasta donde yo sé, sólo se puede hacer con métodos, no con objetos, porque para eso tienes los vectores (arrays), que de hecho es una muchísimo mejor solución (y muchísimo más rápida).
Por cierto, ¿puedes ponerme algún ejemplo de otro lenguaje que permita hacer esto que dices?
cls71:
Como comenté en el primer post lo podía resolver con arrays, en concreto con listas tipadas. Pero me vino a la cabeza la duda de si podría apuntar al objeto partiendo de su nombre.
En javascript se puede con la función eval (lo digo con la boca pequeña porque hace años que no lo toco).
Y en ABAP IV se haría así (son variables en vez de objetos pero el ejemplo funciona igual):
--- Código: Text ---WRITE:/,/,/.* ------------------------ DYNAMIC ASSIGN ---------------------------- ** En este ejemplo la asignación se hace en función del nombre del campo.* Ejemplo de bucle para mostrar todas las variables con un prefijo común* El nombre de la variable se actualiza con el paso del bucle.* -------------------------------------------------------------------- *DATA: A1(10) , A2(10) , A3(10).DATA NAME(10) TYPE C.A1 = 'aaaaaaaaaa'. A2 = 'bbbbbbbbbb'. A3 = 'cccccccccc'.NAME = 'A'.FIELD-SYMBOLS: <FS1>.DATA INDICE(1) TYPE C.DO 3 TIMES. INDICE = SY-INDEX. CONCATENATE 'A' INDICE INTO NAME. WRITE:/ NAME. "Escribe el nombre de la variable ASSIGN (NAME) TO <FS1>. WRITE: <FS1>. "Escribe el contenido de la variableENDDO. WRITE:/,/,/.
Navegación
[#] Página Siguiente
Ir a la versión completa