c#:当在switch语句中使用时,为什么需要从枚举到INT的转换?枚举是整数

Mar*_*tin 16 c# enums casting switch-statement

任何人都可以告诉我为什么我需要从我的枚举中转换为Int

        switch (Convert.ToInt32(uxView.SelectedValue))
        {
            case (int)ViewBy.Client:
Run Code Online (Sandbox Code Playgroud)

如果我删除了演员(int)它失败并说我必须使用演员表.

这是我的枚举,枚举是整体的......任何人都知道这个吗?

    public enum ViewBy
    {
        Client,
        Customer
    }
Run Code Online (Sandbox Code Playgroud)

Ant*_*lev 11

在C#enum中,不只是数字.相反,它们是与上下文中具有名称的类型或数字相关联的数字.

为了避免在case语句中进行强制转换,您可以进行强制转换switch:

switch((ViewBy)Convert.ToInt32(uxView.SelectedValue))
Run Code Online (Sandbox Code Playgroud)

然而,这有其自身的问题.例如,这段代码将写入7控制台.

enum ViewBy
{
    ChuckNorris = 1,
    JamesBond
}

Console.WriteLine((ViewBy)7);
Run Code Online (Sandbox Code Playgroud)

  • 它的问题是什么?!?!?一定要告诉 (4认同)
  • @ jordan.peoples如果您仍然感兴趣,请查看我的更新.那么晚了,从来没有,呵呵:) (2认同)