Probleme avec les enum

Résolu
thmatew Messages postés 68 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 19 janvier 2010 - 7 mars 2007 à 13:41
koala59230 Messages postés 11 Date d'inscription mardi 28 janvier 2003 Statut Membre Dernière intervention 7 mars 2007 - 7 mars 2007 à 15:31
Salut,

j'ai un petit souci avec les enums voici ce que j'ai ( et je sens que c'est encore un truc tout bete):

enum DEFPARAM
{   
   param1,
   param2,
   param3
}
et une variable string recup qui recupere le nom du param
par Exemple : recup="param1";
comment puis-je faire pour recuperer l'index???
car DEFPARAM[recup] ne fonctionne pas.

Merci d'avance pour vos réponses.

17 réponses

thmatew Messages postés 68 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 19 janvier 2010
7 mars 2007 à 15:05
j'ai trouver plus simple:

int par=(int)Enum.Parse(typeof(DEFPARAM),"param1");

retournera 0.

Merci les mec d'avoir passer du temps sur ce petit probleme
3
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
7 mars 2007 à 14:04
Salut,
Regardes du côté des méthodes static de la class Enum

<hr />
-Blog-
0
koala59230 Messages postés 11 Date d'inscription mardi 28 janvier 2003 Statut Membre Dernière intervention 7 mars 2007
7 mars 2007 à 14:43
Hello,
en VB .net 1.1 tu peux ca

Array.IndexOf(eligne.GetNames(GetType(test)), ligne)

avec
    Enum test
        ONE
        TWO
    End Enum

et
        Dim ligne As String = "ONE"
        Dim eligne As test

pour la convert en C# a toi de joueur
a+
0
koala59230 Messages postés 11 Date d'inscription mardi 28 janvier 2003 Statut Membre Dernière intervention 7 mars 2007
7 mars 2007 à 14:47
zut ca marche pas cela ne retourne que l'index dans le tableau c ok si tes valeurs d'enum sont egales a tes index.
desolez
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
7 mars 2007 à 14:50
Tu peux utiliser ceci pour transformer la string en enum :

DEFPARAM param = (DEFPARAM)Enum.Parse(typeof(DEFPARAM), param1);

Mais je ne vois pas ce que tu appelles "index"

Sébastien FERRAND (blog)
Consultant Indépendant
[Microsoft Visual C# MVP]
0
koala59230 Messages postés 11 Date d'inscription mardi 28 janvier 2003 Statut Membre Dernière intervention 7 mars 2007
7 mars 2007 à 14:51
Re moi,
apres quelques tests
ca cela fonctionne nickel



Convert.ToInt16(eligne.Parse(GetType(test), "ONE"))






a+
0
thmatew Messages postés 68 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 19 janvier 2010
7 mars 2007 à 14:57
sebmafate,

par index je parle du numero dans l'enum
par exemple param1 a pour index 0
0
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
7 mars 2007 à 14:57
Non, non, non et non !

Parse est une méthode static de la structure Enum... et donc ne fait pas partie de la variable eligne !

En C#, il n'est pas possible d'appeler une méthode static d'un type depuis une instance de ce type ! C'est un abération de VB.net !

Enfin, ce forum est un forum C#, merci de donner (et vérifier) des exemples en C# et non en VB.net !

Sébastien FERRAND (blog)
Consultant Indépendant
[Microsoft Visual C# MVP]
0
koala59230 Messages postés 11 Date d'inscription mardi 28 janvier 2003 Statut Membre Dernière intervention 7 mars 2007
7 mars 2007 à 14:59
re,
donc la premiere solution que j'ai donné te permet de faire cela.
la seconde de retourne la valeur de ton enum

a+
0
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
7 mars 2007 à 15:02
Ok... par défaut, si aucune valeur n'est donnée aux éléments de ton enum, ils sont automatiquement affublés d'une valeur donc :

enum DEFPARAM
{   
   param1, // 0
   param2, // 1
   param3  // 2
}

Sinon, si le but est d'avoir la position d'un élément dans ton enum :

int index = Array.IndexOf<string>(Enum.GetNames(typeof(DEFPARAM)), param);

Sébastien FERRAND (blog)
Consultant Indépendant
[Microsoft Visual C# MVP]
0
thmatew Messages postés 68 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 19 janvier 2010
7 mars 2007 à 15:02
nous sommes en c# dsl mais tout ce que tu me donne n'existe pas
0
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
7 mars 2007 à 15:05
thmatew : nous sommes en c# dsl mais tout ce que tu me donne n'existe pas

A qui t'adresses-tu ?

Sébastien FERRAND (blog)
Consultant Indépendant
[Microsoft Visual C# MVP]
0
thmatew Messages postés 68 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 19 janvier 2010
7 mars 2007 à 15:06
je m'adressais a koala59230
0
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
7 mars 2007 à 15:08
c'est tout à fait la solution que je t'ai donné tout à l'heure ;)

Mais attention, ce code te retourne la valeur de ton enum et non l'index... essaye avec cet enum :

enum DEFPARAM {
   param1 = 5,
   param2,
   param3
}

Sébastien FERRAND (blog)
Consultant Indépendant
[Microsoft Visual C# MVP]
0
thmatew Messages postés 68 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 19 janvier 2010
7 mars 2007 à 15:11
oui tu as raison, mais pour l'utilité que j'en ai cela me suffit .

merci beaucoup de m'avoir débloquer

@+++ amis developpeurs
0
koala59230 Messages postés 11 Date d'inscription mardi 28 janvier 2003 Statut Membre Dernière intervention 7 mars 2007
7 mars 2007 à 15:15
ok ok,
mea culpa, j'ai été un peu trop vite dans mes réponses.

pardon, mille excuses et le pire dans tout cela c'est que je hais le vb.net mais bon pour le moment au niveau pro c'est du vb.net et je prefere de loin le c#.

donc encore une fois mille excuses pour mes goudes.

je ne le referra plus !!

bon courage
0
koala59230 Messages postés 11 Date d'inscription mardi 28 janvier 2003 Statut Membre Dernière intervention 7 mars 2007
7 mars 2007 à 15:31
Bon pour me faire pardonner,
...
enum test
{
ONE = 4,
TWO = 10,
THREE = 20
}
....

static
void Main(
string[] args)
{

string eligne= "THREE";

Console.WriteLine("CLEF = " + Enum.Parse(
typeof(test), eligne));
Console.WriteLine("INDEX = " + Array.IndexOf(Enum.GetNames(
typeof(test)), eligne));
// Retourne l'index tableau
Console.WriteLine("VALEUR = " + Convert.ToInt16(Enum.Parse(
typeof(test), eligne)));
Console.ReadLine();
}

resultat:
CLEF   = THREE
INDEX  = 2
VALEUR = 20

et en C# et testé

a+

encore 1000 excuses
0
Rejoignez-nous