在课堂外使用枚举

时间:2014-10-01 20:58:08

标签: c# enums

我是enums的新手,并且阅读它最好在命名空间中的类之外定义枚举。

namespace MyNamespace
{
    public static enum Index
    {
        First = 0,
        Last = 1,
    }

    public class MainPage
    {
        private MyClass[] myClasses = new MyClass[2];

        public MainPage()
        {
            myClasses[Index.First] = new MyClass();
            myClasses[Index.Last] = new MyClass();
        }
    }
    public class MyClass{}
}

我做错了什么?

编辑:

代码可以通过这种方式工作:

public MainPage()
{
    myClasses[(int)Index.First] = new MyClass();
    myClasses[(int)Index.Last] = new MyClass();
}

为了更好地理解我想要的东西,这里是我的"枚举"根据我的新知识:

namespace OnScreenKeyboard.Enumerations
{
    namespace Key
    {
        public static class Keys
        {
            public const int Left      = 0;
            public const int Right     = 1;
            public const int Shift     = 20;
            public const int Backspace = 29;
            public const int Numbers   = 30;
            public const int Country   = 31;
            public const int Space     = 35;
            public const int Enter     = 39;
        }
    }
}

我可以这样做:

using OnScreenKeyboard.Enumerations.Key;

namespace OnScreenKeyboard
{
    public MainPage()
    {
        InitializeComponent();

        if (keyNumber == keys[Keys.Shift])
        {
            // Switch to Upper-Case Letters
        }        
    }
}

我真的想使用枚举,但是如果我必须总是在代码中写这个丑陋的(int),我更喜欢更好的常量。

1 个答案:

答案 0 :(得分:0)

enum永远不会static它只是存在(带有可选的访问修饰符)。

删除它,其余的代码看起来很好(如果通过枚举索引编码很奇怪,但它会起作用)。

来自C#5规范:

  

枚举类型是具有一组命名常量的不同值类型。   以下示例声明并使用名为Color with的枚举类型   三个常数值,红色,绿色和蓝色。

using System;
enum Color
{
    Red,
   Green,
   Blue
}