Подтвердить что ты не робот

Проблемы, объявляющие статическое перечисление, С#

Привет, я пытаюсь объявить статическое перечисление следующим образом:

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)
        {
            ...            

"Но я получаю следующую ошибку:" Модификатор "static" недействителен для этого элемента". Я знаю, что это просто, но я не вижу проблемы. Большое спасибо!

4b9b3361

Ответ 1

Перечисления - это типы, а не переменные. Поэтому они являются "статическими" для каждого определения, вам не нужно ключевое слово.

public enum ProfileMenuBarTab { MainProfile, Edit, PhotoGallery }

Ответ 2

Выньте static.
Перечисления - это типы, а не члены; нет понятия статического или нестатического перечисления.

Возможно, вы пытаетесь создать статическое поле своего типа, но это не имеет ничего общего с объявлением типа.
(Хотя вы, вероятно, не должны создавать статическое поле)

Кроме того, вы не должны создавать public вложенные типы.

Ответ 3

Вам не нужно определять его как static.When перечислимый тип компилируется, компилятор С# превращает каждый символ в постоянное поле типа. Например, компилятор рассматривает перечисление цвета, показанное ранее как если бы вы написали код, похожий на следующий:

internal struct Color : System.Enum {
            // Below are public constants defining Color 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 value
            // You cannot write code that references this instance field directly
            public Int32 value__;
}

Ответ 4

Вы пытаетесь сделать объявление enum declartion static, то есть поле типа ProfileMenuBarTab. Чтобы объявить класс (или что-то еще) в классе, оставьте static.

Ответ 5

Перечисление - это тип, а не значение. Модификатор static здесь не имеет особого смысла.