在C#中创建枚举时出错 - “标识符预期”

时间:2012-01-30 16:40:44

标签: c# enums

在创建枚举

之前,我从未使用枚举

我想在C#中创建一个类似

的枚举
enum e{10:30 a.m.,10:31 a.m.,10:32 a.m.}

但它说预期的标识符..你可以帮助我创建它。

5 个答案:

答案 0 :(得分:6)

当然可以添加属性:

enum e
{
    [Description("10:30 a.m.")]
    AM1030,    

    [Description("10:31 a.m.")]
    AM1031,

    [Description("10:32 a.m.")]
    AM1032,
}


    var type = e.GetType();
    var memInfo = type.GetMember(e.AM1030.ToString());
    var attributes = memInfo[0].GetCustomAttributes(typeof(DescriptionAttribute), false);
    var description = ((DescriptionAttribute)attributes[0]).Description;

答案 1 :(得分:3)

你可以做到

    enum e
    {
       time1,
       time2,
       time3, 
    } 

您不能将像上午10.30这样的值作为枚举类型。

答案 2 :(得分:3)

我建议查看DateTime:http://msdn.microsoft.com/en-us/library/system.datetime.aspx

为一天中可能的时间创建枚举将容易导致代码腐烂,因为每次想要支持一天中的不同时刻时,您将不得不更改该枚举。

但是,如果您的业务逻辑真的特定于这三分钟,那么您想要的是:

    enum Minute
    {
        TenThirty,
        TenThirtyOne,
        TenThirtyTwo
    }

enum只接受标识符,它们必须是一个没有空格的单个单词。

答案 3 :(得分:2)

在您的情况下,一个选项不是使用枚举,而是这样:

public static class Times {
    public static DateTime AM1030 = new DateTime(1,1,0,10,30);
    public static DateTime AM1031 = new DateTime(1,1,0,10,31);
    public static DateTime AM1032 = new DateTime(1,1,0,10,32);
}

var time = Times.AM1030;

事实是,它并没有给你任何价值,因为无论如何你都在硬编码。最好的是给它一个商业概念,将那些日期命名为某事(我的意思是,用一个词)。

答案 4 :(得分:-2)

首先,枚举必须在Class级别声明。这意味着它们不能位于包含您的类的括号内。

不正确:

public class {
    enum myEnum {...}
}

正确:

enum myEnum {...}

public class {
    ...
}

第二:你不能只是写在那里并希望它能够发挥作用。看起来你正试图增加时间。你必须使用datetime对象。或者是一个字符串,如果你计划在每次阅读它时进行分析。

以下是将动物名称与数字相关联的枚举示例:

public enum Pets { None=0, Dog=1, Cat=2, Bird=4, Rodent=8, Reptile=16, Other=32 };

希望这有帮助。