[C#] enum & int : faut caster ?

scoubidou944 Messages postés 714 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 19 janvier 2017 - 8 avril 2004 à 11:51
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 - 8 avril 2004 à 17:30
Question 1:
-------------

[Flags] public enum E_gloAccountFlag : ushort
{
u0NoFlag = 0,
u1Script = 1,
u1AccountDisable = 2
}

uint uiMyFlag = 4;
E_gloAccountFlag uiMyFlag2;
if ((uiMyFlag & (uint)(E_gloAccountFlag.u1Script))==(uint)E_gloAccountFlag.u1Script)
uiMyFlag2= E_gloAccountFlag.u1Script;

La question est : y a t-il moyen d'éviter tous ces put... de cast parce qu'en C+µ+ ca ressemblait plutot à ca :
if (uiMyFlag & UF_SCRIPT)
uiMyFlag2= UF_SCRIPT;

Question 2:
-------------

enum eNcpCategoryType : int
{
eFirstBlackList = 0,
eBlUserDefine = eFirstBlackList,
eBlViolence,
[...] Blahblah
};

System.Windows.Forms.TreeNode [] m_aNodes;

m_aNodes = new TreeNode [(int)eNcpCategoryType.eMaxCategoryTypes];

Idem, pourquoi ce cast sinon ca compile pas ?

Thx
----------------------------
C++ forever
C# amateur

3 réponses

cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
8 avril 2004 à 14:01
Question 2 : parce que eMaxCategoryTypes est de type eNcpCategoryType alors faut dire au compilateur que c'est un int.

Question 1 : je sais pas, mais si tu veux raccourcir et te faciliter la relecture du code tu peux peut etre faire ça :
uint uiMyFlag = 4;
E_gloAccountFlag uiMyFlag2;
uint cool = (uint)(E_gloAccountFlag.u1Script);
if ((uiMyFlag & cool)==cool)
uiMyFlag2= E_gloAccountFlag.u1Script;

le if est un peu moins gros comme ça, et plus facile à lire

par contre ton enum est en ushort et tu cast en uint

Cocoricoooooooo !!!!
0
scoubidou944 Messages postés 714 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 19 janvier 2017
8 avril 2004 à 14:07
Oups, avait pas fait gaffe au cast;p
bon finallement, les enum, ques D 'int' au moins pas de sushi.

Et just au passage comme ca, sous Visual Studio 6, y'a un truc pratik , Ctrl+Alt+F8 poru faire une selection par colonne, ca marche pu sous C# .NET 2003 :(

----------------------------
C++ forever
C# amateur
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
8 avril 2004 à 17:30
maintient alt enfoncé et fait ta sélection

Cocoricoooooooo !!!!
0
Rejoignez-nous