c#中枚举元素的默认值?

时间:2010-09-06 11:27:40

标签: c#

public enum DAYS {
    Monday=1, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday
}

这里假设我想覆盖枚举元素的默认值,就像星期一一样。在这里,据我所知,给1到星期一2将是星期二的默认值,下一个将有3左右,

让我们改变一下情景

public enum days
{
    monday = 4,
    tuesday=8,
    wednesday,
    thursday,
    friday=25,
    saturday,
    sunday
}

这将是星期三,星期四和星期六,星期日的价值......?

问题2:

我们可以将char和string类型的值赋给枚举元素...

问题3:

我们可以将enum重写为char或string类型吗?

喜欢

public enum name :string
{
    first_name="nishant",
    Last_name = "kumar"
}

2 个答案:

答案 0 :(得分:7)

  1. 您未指定的任何值比前一个值高1。 (周三将是9,周四将是10,周六26和周日27.)请注意,当枚举用[Flags]属性修饰时,这甚至是正确的 - 你应该总是指定与每个名称相关的基础值使用[Flags]时。

    来自C#4规范的第14.3节:

      

    否则,通过将文本上在前的枚举成员的关联值增加1来获得枚举成员的关联值。该值必须在可由基础类型表示的值范围内,否则会发生编译时错误。

  2. 不,枚举的有效基础类型为sbytebyteshortushortint,{{1} },uintlong,根据C#规范的第14.1节。它明确指出:

      

    请注意,ulong不能用作基础类型。

    (这里没有提到字符串,因为它已经说过基础类型必须是整数类型。)

  3. 根据2的答案无关。

  4. 通常,如果要将任意字符串值与枚举值相关联,则应使用键入枚举值名称的资源文件,或使用属性(例如DescriptionAttribute)。

答案 1 :(得分:4)

  1. 星期三将等于9,星期四将是10.星期六将是26日和27日星期日。
  2. 没有
  3. 没有