2017-09-28 1 views
0

Je voulais juste poser une question concernant Enums. Je suis un Enum qui ressemble à ceci:Traiter une énumération comme un tableau?

public enum CameraPosition 
{ 
    ROOM_1, 
    ROOM_2, 
    ROOM_3 
} 

Donc ce que je veux faire est par exemple, que je suis actuellement en utilisant une valeur qui est représentée par ROOM_2. Maintenant, j'appuie sur un bouton, c'est censé passer à la valeur représentée par ROOM_1, mais sans avoir à coder en dur le cas de passer de ROOM_2 à ROOM_1.

Donc, si ma valeur en cache est définie comme suit:

CameraPosition pos = CameraPosition.ROOM_2; 

Je veux faire quelque chose comme ceci:

pos = CameraPosition.ROOM_2 - 1; 

Et cela voudrait dire que ce pos est maintenant ROOM_1.

Est-ce possible avec Enums, ou devrais-je lancer mon propre type de solution pour y parvenir? Peut-être une autre approche.

+0

Oui, vous pouvez - les valeurs enum sont de simples entiers en C#. Dans votre interface utilisateur, voulez-vous faire défiler les caméras? Parce que si vous avez un bouton par caméra, vous pouvez simplement utiliser CameraPosition comme une propriété du bouton. Ensuite, vous copiez simplement cette valeur dans "pos" dans l'événement click. Aucun calcul impliqué de cette façon. – theGleep

+0

@theGleep Oh non, c'est une caméra dans la scène. Je change juste sa position. Probablement deux boutons, l'un pour aller "une pièce en haut" et l'autre pour aller "One Room Down". – OmniOwl

+0

'k ... ouais, les maths sont probablement nécessaires, alors. :) – theGleep

Répondre

1

Oui, vous pouvez le faire. Par défaut en C#, les enums sont ints (see documentation). Vous pouvez définir explicitement des valeurs si vous le souhaitez ou lui permettre de commencer par 0. Voir aussi la première réponse sur this question.

+0

Hey d'accord, merci! Je n'ai pas vraiment utilisé les énumérations de cette façon, alors j'ai pensé que je demanderais. – OmniOwl