Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1212 connectés 

  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  [C#] enum et struct

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C#] enum et struct

n°2058303
tommz
Posté le 21-02-2011 à 10:52:32  profilanswer
 

Bonjour,
 
j'ai une question technique.
 
J'avais d'abord déclarer dans mon code un enum

Code :
  1. public enum Block
  2. {
  3.      Un = 1,
  4.      Deux = 2,
  5.      Trois = 3,
  6.      Quatre = 4
  7. }


Et je me suis rendu compte en le faisant que il me fallait afficher ces valeurs, et les afficher pas n'importe comment. je souhaite faire un tableau de valeur statique qui comprendrai pour chaque entrée une paire de valeur.. la valeur utile et la valeur affichable IE:

Code :
  1. public struct Pair
  2.     {
  3.         int Value;
  4.         string Name;
  5.     }
  6. Un = {1, "Un"},
  7. Deux = {2, "Deux"},
  8. Trois = {3, "Trois"},
  9. Quatre = {4, "Quatre"}


 
le problème, c'est que j'arrive pas a faire un enum de ce bordel :p
 
les valeurs n'ont pas vocations à être modifiées en Runtime
 
J'aurais souhaité y accéder facilement
Block.Un.Value
Console.WriteLine("La valeur est "+Block.Un.Name);
 
j'ai essayer de remplir mon enum avec des Pair, mais je ne peux pas les utiliser (normal, il ne sais pas quel est le type à l'intérieur de l'enum...)
 

Code :
  1. public struct MA_Pair
  2.     {
  3.         string Name;
  4.         int Value;
  5.         public MA_Pair(int value, string name)
  6.         {
  7.             Value = value;
  8.             Name = name;
  9.         }
  10.     }
  11.     public enum MA_Block
  12.     {
  13.         Air = new MA_Pair(0x00, "Air" )
  14.     }


 
     
invalid:
MA_Block.Air.Value
 
 
Je pourrais tout mettre dans une classe, mais ca m'obligerai à l'instancier, et puis elle serait pas visible partout a moins de faire une variable globale moche. Je préférerais que ca soit accessible dans le namespace sans avoir a me soucier de l'instanciation.
 
je pourrais aussi faire un double tableau type
 
 

Code :
  1. public enum MA_Block
  2.     { Air=0, Stone, Grass, Dirt }
  3. private MA_Pair[] BlockList = new MA_Pair[4];
  4. BlockList[MA_Block.Air] = new MA_Pair(0x01, "Air" );
  5. BlockList[MA_Block.Stone] = new MA_Pair(0x02, "Stone" );
  6. BlockList[MA_Block.Grass] = new MA_Pair(0x03, "Grass" );
  7. BlockList[MA_Block.Dirt ] = new MA_Pair(0x04, "Dirt " );


 
 
Ca oblige a faire 2 déclaration distincte, et surtout à maintenir les 2! si jamais je veux me débarraser d'une valeur au milieu, bonjour la galère :p
 
pour y acceder de la sorte:

Code :
  1. BlockList[MA_Block.Air].Value
  2. BlockList[MA_Block.Stone].Name


Mais c'est pas très sympa comme accesseur.
de plus, pour ma map après, ca devient super illisible
 

Code :
  1. private MA_Pair[,,] Map = new MA_Pair[_width, _height, _depth];
  2.             for (int i = 0; i < _width; i++)
  3.                 for (int j = 0; j < _depth; j++)
  4.                     for (int k = 0; k < _height; k++)
  5.                         Map [i, j, k] = BlockList[MA_Block.Air];


 
ca devient compliquer là :p
 
bref, j'ai ptet pas la meilleure solution en tete... quelqu'un aurait une idée?
 

mood
Publicité
Posté le 21-02-2011 à 10:52:32  profilanswer
 

n°2058354
gilou
Modérateur
Modzilla
Posté le 21-02-2011 à 13:37:54  profilanswer
 

Citation :

Chaque type d'énumération a un type sous-jacent qui peut être n'importe quel type intégral sauf char. Le type sous-jacent par défaut des éléments de l'énumération est int. Pour déclarer un enum d'un autre type intégral, tel que octet, utilisez les deux-points après l'identificateur suivi par le type :
 
Les types approuvés pour un enum sont byte, sbyte, short, ushort, int, uint, long ou ulong.

Tu ne peux donc déclarer un énum dont les éléments sont des structs.
 
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  [C#] enum et struct

 

Sujets relatifs
ISO C++ forbids declaration of SHA1[C++] Comment récupérer La mémoire virtuelle occupée par un processus?
Erreur dans l'appel d'une procédure stockée sous Visual C++ (6.0)[C#] Web service et message SOAP XML
citer les numeros d'erreur dans enum[PYTHON] Module C++ pour python
Recherche le titre d'un bouquin C++Programmation en C, besoin d'aide
Problème C++ : Syntax error : missing ';' 
Plus de sujets relatifs à : [C#] enum et struct


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR