[C#] enum & int : faut caster ?

Signaler
Messages postés
714
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
19 janvier 2017
-
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
-
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

Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
92
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 !!!!
Messages postés
714
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
19 janvier 2017

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
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
92
maintient alt enfoncé et fait ta sélection

Cocoricoooooooo !!!!