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

Nis*_*mar 1 c#

public enum DAYS {
    Monday=1, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday
}
Run Code Online (Sandbox Code Playgroud)

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

让我们改变一下

public enum days
{
    monday = 4,
    tuesday=8,
    wednesday,
    thursday,
    friday=25,
    saturday,
    sunday
}
Run Code Online (Sandbox Code Playgroud)

星期三,星期四,星期六,星期天,这将是什么价值?

问题2:

我们可以为枚举元素指定char和string类型的值...

问题3:

我们可以将枚举重写为char或字符串类型吗?

public enum name :string
{
    first_name="nishant",
    Last_name = "kumar"
}
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 7

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

    从C#4规范的第14.3节:

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

  2. 否,则有效底层类型枚举是sbyte,byte,short,ushort,int,uint,longulong,具体根据C#规范的章节14.1.它明确指出:

    请注意,char不能用作基础类型.

    (这里没有提到字符串,因为它已经说过底层类型必须是一个整数类型.)

  3. 基于对2的回答不相关.

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