J'ai principalement un arrière-plan C++ et j'apprends le C#. Donc, j'ai besoin d'aide avec les idiomes C# et le style. J'essaye d'écrire, en C#, une petite méthode d'analyse de fichier texte dans laquelle j'ai besoin d'une simple variable d'état avec trois états. En C++ je déclarerais un enum
comme celui-ci pour la variable d'état:Définir enums dans une méthode en C#?
enum { stHeader, stBody, stFooter} state = stBody;
... et puis l'utiliser dans ma boucle d'analyse syntaxique comme ceci:
if (state == stHeader && input == ".endheader")
{
state = stBody;
}
en C# Je me rends compte que ce n'est pas possible de déclarer un enum
à l'intérieur d'une méthode. Alors, qu'est-ce que je suis censé faire pour le style propre? Déclarer cette enum
interne en dehors de la méthode? Utilisez les nombres magiques 1,2,3? Créer une classe séparée pour cela?
Aidez-moi à clarifier ma confusion.
Peut-être qu'il me manque quelque chose, mais quel est le but d'une énumération si elle est utilisée dans une seule méthode seulement? – Doggett
@Dogget - donne des noms lisibles aux états. Sinon, je devrais écrire if (state == 2 && input == ".endheader") state = 1; – danatel
Auto-annotation de l'état etc. C'est une pratique très courante en C, c'est-à-dire dans l'exemple donné - avoir l'état comme quelque chose de plus significatif qu'un int. Cela revient moins souvent en C# Je dois dire - principalement parce que vous avez tendance à décomposer les méthodes en composants plus petits, en objets, etc., plutôt qu'en C, qui est beaucoup plus impératif. Ou C++ quand il est utilisé similaire à C d'ailleurs. – Mania