71 votes

problèmes déclarant enum statique, C #

Salut, j'essaie de déclarer une énumération statique comme ceci:

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace Lds.CM.MyApp.Controllers
{
    public class MenuBarsController : Controller
    {
        // Menu Bar enums
        public static enum ProfileMenuBarTab { MainProfile, Edit, photoGallery }

        public ActionResult cpTopMenuBar(string tabSelected)
        {
            ...            
 

"Mais je reçois l'erreur suivante:" Le modificateur 'statique' n'est pas valable pour cet élément. "Je sais que c'est quelque chose de simple, mais je n'arrive pas à voir le problème. Merci beaucoup!

156voto

atticae Points 4033

Les énumérations sont des types, pas des variables. Par conséquent, ils sont "statiques" par définition, vous n'avez pas besoin du mot clé.

 public enum ProfileMenuBarTab { MainProfile, Edit, PhotoGallery }
 

16voto

SLaks Points 391154

Enlevez static .
Les énumérations sont des types, pas des membres; il n'y a pas de concept d'enum statique ou non statique.

Vous essayez peut-être de créer un champ statique de votre type, mais cela n’a rien à voir avec la déclaration de type.
(Bien que vous ne devriez probablement pas créer de champ statique)

De même, vous ne devez pas créer de types imbriqués public .

8voto

Tarik Points 16118

Vous n'avez pas besoin de le définir en tant que statique. Lorsqu'un type énuméré est compilé, le compilateur C # transforme chaque symbole en un champ constant du type. Par exemple, le compilateur traite l'énumération Color indiquée précédemment comme si vous aviez écrit un code similaire à celui-ci:

 internal struct Color : System.Enum {
            // Below are public constants defining Color's symbols and values
            public const Color White  = (Color) 0;
            public const Color Red    = (Color) 1;
            public const Color Green  = (Color) 2;
            public const Color Blue   = (Color) 3;
            public const Color Orange = (Color) 4;
            // Below is a public instance field containing a Color variable's value
            // You cannot write code that references this instance field directly
            public Int32 value__;
}
 

2voto

Brian Clapper Points 11222

Une énumération est un type, pas une valeur. Le modificateur static n'a pas beaucoup de sens ici.

1voto

Femaref Points 41959

Vous essayez de créer une déclaration enum statique, c'est-à-dire un champ de type ProfileMenuBarTab . Pour déclarer une classe (ou quoi que ce soit) dans une classe, laissez la statique.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X