Recorrer todos los valores de un enum

30/04/2006 - 19:23 por solved by design | Informe spam
Hola.

¿Cómo puedo recorrer todos los valores definidos de un enum?

La idea es tener una enumeración, y a partir de los propios nombres de la
misma, crear diccionario o lista de strings con dichos nombres.

Algo así:

static enum Valores
{
Valor1,
Valor2,
Valor3
};

foreach(Valores v in Valores)
Diccionario.Add(v,v.ToString())

Ya sé que es rizar el rizo, pero me hace falta algo así y estoy casi seguro
que se puede hacer, pero no localizo la sintaxis correcta.

De este modo, cada vez que añada un valor a la enumeración, tendré todo el
código actualizado automáticamente.

Gracias de antemano.

A falta de manos, buenos son pies.

Preguntas similare

Leer las respuestas

#6 solved by design
01/05/2006 - 12:16 | Informe spam
"Octavio Hernandez" wrote in message
news:
Hola,

Por cierto, todo esto que pregunto por aquí realmente lo estoy haciendo
en C++/CLI, pero esos grupos están muertos... Ventajas del .NET ;-)



Bueno, pues entonces serás de los muy pocos (creo) que tendrá experiencia
con C++/CLI.



La verdad es que no creo que haya muchos... los grupos de vc están
desiertos, y si alguien mete baza es para MFC o el típico chavalín que
pregunta cómo empezar.

Mis preguntas no reciben respuesta, supongo que porque nadie sabe del tema,
y el único que controla es Rodrigo Corral (MVP), pero me parece que del
C++/CLI no.

Yo lo encuentro super-atractivo, siempre me gustó C++ y con C++/CLI se ha
hecho un excelente trabajo (que empezó por formar un equipo de clase
mundial liderado por gente como Herb Sutter y Stan Lippman). Lo que pasa
es que el tiempo no alcanza ;-(

Slds - Octavio





Es muy potente, el más potente de los lenguajes .NET, y el compilador está
bastante bien siempre y cuando organices los ficheros "ala net", porque si
lo haces "ala C++" se vuelve histérico perdido.

Por otro lado, te permite compilar tus cosas nativas y tenerlas disponibles
dentro del .NET sin interop ni nada (que es por lo que yo lo he elegido), y
con los destructores determinísticos es una pasada... Ahora, el entorno no
acompaña, tiene miles de bugs (muchos más que el entorno del C#) y a veces
te desanima...

Como a nivel profesional programo hard en C/C++, lo necesito para las
simulaciones del código que irá dentro de los micros... Antes usaba el C++
Builder, que era directo, pero dado los bandazos que Borland está dando, y a
que he cambiado de trabajo y he tenido que dejar todo el código ya hecho, he
apostado por el que creo es el caballo ganador... Ya veremos.



Solamente el bígamo cree de verdad en el matrimonio.
Respuesta Responder a este mensaje
#7 solved by design
01/05/2006 - 12:33 | Informe spam
Acabo de poner un goto (¿Existe eso en C#) :-P

ConfigManager::ConfigManager(void)

{

//Obtener la ruta de los datos

String
^file=System::Environment::GetFolderPath(Environment::SpecialFolder::ApplicationData)+"\\zxNewton\\zxNewton.cfg";

if(File::Exists(file))

{

StreamReader ^sr=gcnew StreamReader(file);

m_configPath=sr->ReadLine();

sr->Close();

delete sr;

if(!Directory::Exists(m_configPath))

goto errorInConfig;

}

else

{

errorInConfig:

zxNewton::FormAskConfigFolder ^f=gcnew zxNewton::FormAskConfigFolder();

f->ShowDialog();

String ^dataPath=f->ConfigPath;

delete f;

//Creamos la carpeta de los datos si no existía

if(!Directory::Exists(dataPath))

Directory::CreateDirectory(dataPath);

//Creamos la carpeta de los datos locales

String
^path=System::Environment::GetFolderPath(System::Environment::SpecialFolder::ApplicationData)+"\\zxNewton";

if(!Directory::Exists(path))

Directory::CreateDirectory(path);

File::WriteAllText(file,dataPath);

m_configPath=dataPath;

}

}



PS: Sí, ya sé eso de la excepciones y todo eso, pero una excepción puede
tardar 20 segundos o más... y un goto es instantáneo.


Solamente el bígamo cree de verdad en el matrimonio.
Respuesta Responder a este mensaje
#8 solved by design
01/05/2006 - 13:00 | Informe spam
Un poco más complicadillo, pero útil:

array<String ^>^enumValues=Enum::GetNames(ConfigFilesNames::typeid);

for each(String ^s in enumValues)

m_itemsPaths->Add(s,m_configPath+s+".ini");




Solamente el bígamo cree de verdad en el matrimonio.
Respuesta Responder a este mensaje
#9 Octavio Hernandez
01/05/2006 - 13:52 | Informe spam
Es muy potente, el más potente de los lenguajes .NET... Por otro lado, te
permite compilar tus cosas nativas y tenerlas disponibles dentro del .NET
sin interop ni nada (que es por lo que yo lo he elegido), y con los
destructores determinísticos es una pasada...





De acuerdo. La sintaxis bastante "dura", como siempre, pero una vez que la
controlas...

Ahora, el entorno no acompaña, tiene miles de bugs y a veces te
desanima...





Ahí ya no tengo experiencia. Pero es comprensible, es la 1ª versión... A ver
si para la próxima
todo funciona ya bien, y además añaden soporte para aplicaciones web en
C++/CLI (porque
eso es lo que falta ahora, ¿no?)

Antes usaba el C++ Builder...





Yo también he usado y enseñado muchos años el C++ Builder.

Slds - Octavio
Respuesta Responder a este mensaje
#10 Octavio Hernandez
01/05/2006 - 13:53 | Informe spam
Acabo de poner un goto (¿Existe eso en C#) :-P





Claro que sí:

http://msdn2.microsoft.com/en-US/library/13940fs2(VS.80).aspx

Slds - Octavio
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida