scoubidou944
Messages postés714Date d'inscriptionmardi 22 avril 2003StatutMembreDernière intervention19 janvier 2017
-
19 avril 2005 à 18:57
cs_coq
Messages postés6349Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014
-
21 avril 2005 à 15:12
Lorsque l'on a un enum,
on peut avoir un code :
MyEnum.MyElement.ToString ()
Oki, ca marche mais si par exemple on voulait redéfinir le résultat pour obtenir une chaîne différente (par exemple lors d'une localisation) on fait comment à part passer par une bonne grosse table de conversion ?
----------------------------
C++ forever
C# amateur
cs_coq
Messages postés6349Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014101 21 avril 2005 à 00:23
Salut,
Sinon tu peux aussi utiliser la reflection en définissant un attribut Description sur les champs que tu veux , avec une petite méthode "utilitaire" qui te servira pour tout tes enums :
enum Test
{
[Description("Ma valeur de test #1")]
Test1,
[Description("Ma valeur de test #2")]
Test2,
Test3,
}
sebseb42
Messages postés495Date d'inscriptiondimanche 6 juillet 2003StatutMembreDernière intervention 9 novembre 20071 20 avril 2005 à 12:44
ou sinon tu utilise une structure dans ce style la
public struct machin
{
public string truc = "une chaine";
public string bignou = "une autre chaine";
...
}
ou sinon si tu veux faire un truc plus violent, tu peux creer une structure d'objet, avec un objet comme ca :
public class MySpecialEnum
{
public readonly string Value;
public readonly int ID;
public MySpecialEnum(int id, string s)
{
Value = s;
ID = id;
}
public static bool operator==(MySpecialEnum a, MySpecialEnum b)
{
return (a.ID == b.ID);
}
public override string ToString()
{
return (Value);
}
}
et ensuite ta structure :
public struct MyEnums
{
public MySpecialEnum truc = new MySpecialEnum(1, "une chaine avec truc ecrit dedans");
public MySpecialEnum machin = new MySpecialEnum(2, "une chaine qui dit machin");
public MySpecialEnum arf = new MySpecialEnum(3, "arf arf!!");
}
et ensuite admettons que tu es une instance de ta structure MyEnums qui s'appel myen, tu peut faire
if (my_special_enum_object == myen.truc)
{
// ici c'est l'operateur == qui se charge du boulot, catte methode permet de comparer des int et non pas de faire implicitement des string.Compare(), qui sont beaucoup plus couteux
}
et si tu as besoin d'afficher :
txtAffiche.Text = myen.truc;
// en theorie ceci devrais implicitement appeler la fonction ToString() qu'on a redefini, et sinon au pire myen.truc.ToString();
sebseb42
Messages postés495Date d'inscriptiondimanche 6 juillet 2003StatutMembreDernière intervention 9 novembre 20071 20 avril 2005 à 12:47
ah oui j'oubliais, tu peux aussi ne pas te preoccuper des ID a la creation des objets MySpecialEnum en mettant une variable static auto-incremental au sein de la classe.
ceci dit, la methode que j'ai mis plus au te permet d'avoir un control precis sur tes ID, car tu peut vouloir quelques fois avec deux objets different avec les memes ID.
Vous n’avez pas trouvé la réponse que vous recherchez ?
scoubidou944
Messages postés714Date d'inscriptionmardi 22 avril 2003StatutMembreDernière intervention19 janvier 2017 20 avril 2005 à 13:02
ca reste violent comme méthode, je me demande ou le compilo met le code
qu'il génère pour générer ses strings d'enum. enfin bref, pour le
moment, je sens que le switch va rester comme ca et au pire, je fais un
hashtable.
----------------------------
C++ forever
C# amateur
sebseb42
Messages postés495Date d'inscriptiondimanche 6 juillet 2003StatutMembreDernière intervention 9 novembre 20071 21 avril 2005 à 11:03
une petite question qui n'as rien a voir avec le sujet mais qui peut toutefois interesser du monde, pour avoir la coloration syntaxique, est-ce que tu fait ca a la pogne ou est-ce qu'il y a une balise particuliere qui explique a une moulinette qu'on veut qu'elle le fasse tout seul pour nous ?
ou est-ce que tu code dans VS et le copier/coller garde la couleur ? (je suis pas sur de ca)
cs_coq
Messages postés6349Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014101 21 avril 2005 à 11:08
Si, le c/c depuis VS se fait en RTF avec conservation des couleurs quand on colle dans la FreeTexBox :-)
J'ai juste un bout de code qui remplace les \par par des \line dans le presse papier, sinon il y a une ligne passée entre chaque ligne quand on colle dans la FTB.