首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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

在C#中,枚举(Enum)是一种用户自定义的数据类型,它包含了一组命名的整数常量。当在switch语句中使用枚举时,需要将枚举转换为整数(int),因为switch语句的基础类型是整数。这是因为switch语句在编译时会将枚举值转换为整数,并根据这些整数值进行匹配。

例如,假设我们有一个表示颜色的枚举:

代码语言:csharp
复制
enum Color
{
    Red,
    Green,
    Blue
}

在switch语句中使用枚举时,需要将枚举转换为整数,如下所示:

代码语言:csharp
复制
Color color = Color.Red;

switch ((int)color)
{
    case (int)Color.Red:
        Console.WriteLine("颜色为红色");
        break;
    case (int)Color.Green:
        Console.WriteLine("颜色为绿色");
        break;
    case (int)Color.Blue:
        Console.WriteLine("颜色为蓝色");
        break;
    default:
        Console.WriteLine("未知颜色");
        break;
}

这样做的原因是,switch语句需要一个基础类型(如int、char、string等)来进行匹配,而枚举不是基础类型,因此需要进行转换。在这个例子中,我们将枚举值转换为整数,以便在switch语句中进行匹配。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

深入理解 C# 编程:枚举、文件处理、异常处理和数字相加

C# 枚举 枚举一个特殊“类”,表示一组常量(不可更改/只读变量)。...要从项中获取整数值,必须显式将项转换int: enum Months { January, // 0 February, // 1 March, // 2 April...myNum = (int) Months.April; Console.WriteLine(myNum); } 输出将为: 7 在 Switch 语句中使枚举 枚举通常在 switch 语句中用于检查相应值...这种情况技术术语C# 会引发异常(抛出错误)。 C# try 和 catch try 语句允许您定义一块在执行过程中测试错误代码块。...try 和 catch 关键字成对出现: try { // 试图执行代码块 } catch (Exception e) { // 处理错误代码块 } 考虑以下示例,我们在其中创建一个包含三个整数数组

16310

C#基础知识大总结(在C语言基础上)

前言 本文为C#基础知识,在有一定C语言或C++基础上进行总结,因此会省略许多C语言基础知识,但是对一些C#特有或者C语言中比较少见或重要知识也会归纳博文里。...包括:枚举、数组、结构体 1.枚举 a.定义 一个被命名整型常量集合 一般便是状态、类型 //枚举名 以E或者E_开头,作为我们命名规范 enum E_自定义枚举名 {     自定义枚举项名字...playerType = E_PlayerType.Main; 枚举switch语句非常适合,switch括号中写上常量,后面会自动补全。...c.枚举类型转换(不常用) // 枚举int互转 int i = (int)playerType; Console.WriteLine(i); // 枚举和string相互转换 string str...//求n个整数函数 static int Sum(params int[] arr) {     //利用for循环求数组内数字和即可 } //调用时 Sum(1,2,3,4,5,6);//可以传任意多个参数

20520
  • C#“智能枚举”:如何在枚举中增加行为

    我们使用强制类型转换枚举转换整数,然后在取模 7 意义下加或减 1 或 6,以便正确地计算出前一天或后一天日子。 输出结果应该是这样: 今天 Tuesday。...enum 可以很好地表示对象状态,因此它是实现状态模式常见选择。在 C# 中,您可以使用 switch 语句来根据不同 enum 值执行不同操作。...在 C# 中,您可以使用 switch 语句或 if-else 语句来根据不同 enum 值选择不同算法或行为。 工厂模式 工厂模式允许您使用一个共同接口来创建不同对象。...enum 可以很好地表示这些对象类型,因此它是实现工厂模式常见选择。在 C# 中,您可以使用 switch 语句或 if-else 语句来根据不同 enum 值创建不同对象。...该类中核心方法 GetEnumerations,它使用反射获取当前枚举类型中所有字段,并将它们转换枚举值。

    30520

    C#“智能枚举”:在枚举中增加行为?

    我们使用强制类型转换枚举转换整数,然后在取模 7 意义下加或减 1 或 6,以便正确地计算出前一天或后一天日子。 输出结果应该是这样: 今天 Tuesday。...enum 可以很好地表示对象状态,因此它是实现状态模式常见选择。在 C# 中,您可以使用 switch 语句来根据不同 enum 值执行不同操作。...在 C# 中,您可以使用 switch 语句或 if-else 语句来根据不同 enum 值选择不同算法或行为。 工厂模式 工厂模式允许您使用一个共同接口来创建不同对象。...enum 可以很好地表示这些对象类型,因此它是实现工厂模式常见选择。在 C# 中,您可以使用 switch 语句或 if-else 语句来根据不同 enum 值创建不同对象。...该类中核心方法 GetEnumerations,它使用反射获取当前枚举类型中所有字段,并将它们转换枚举值。

    37620

    C#复习题 填空题

    在if语句中,每个else关键字与它前面同层次并且最接近 if    关键字相配套。 当在程序中执行 break       语句时,将结束本层循环类语句switch语句执行。...在switch语句中,每个语句标号所含关键字case后面的表达式可以是整型、 字符串型    。 定义结构体关键字  Struct        。...循环语句“for (int i=20; i>=9; i=i-3)”循环次数为_  4___。 用来存储和显示图像控件 PictureBox图片框控件     。...当在程序中执行 break     语句时,将结束所在循环语句中循环体一次执行。 C语言一种面向  过程       语言,而C#   对象    语言。...定义枚举关键字 enum      。 面向对象语言具有__继承_ 性、封装性、_多态 性。

    4K10

    Java 7新特性总结 - Coin项目新语言特性

    switch语句中使用字符串 在Java 7之前,switch语句条件表达式类型只能整数类型兼容类型,包括基本类型char、byte、short和int,与这些基本类型对应封装类Character...根据switch语句语法要求,其case子句不能重复。这个要求对字符串类型条件表达式同样适用。...实现:原来用在switch语句字符串被替换成了对应哈希值,而case子句值也被换成了原来字符串常量哈希值。经过这样转换,Java虚拟机所看到仍然整数类型兼容类型。...枚举类型 如果代码中有多个地方使用switch语句枚举字符串,就考虑用枚举类型进行替换。 3.数值字面量改进 二进制整数字面量 在Java 7之前,所支持进制包括十进制、八进制和十六进制。...十进制默认使用进制。八进制用在整数字面量之前添加“0”来表示,而十六进制则是用在整数字面量之前添加“0x”或“0X”来表示。Java 7中增加了一种可以在字面量中使进制,即二进制。

    62710

    --03:控制流

    冒号前面的1,3,5,10,这些条件表达式属于case语句标号。标号列表中常数必须互不相同,大部分语言中只允许使用简单整数枚举、字符等,C#中还允许字符串。...16 break; 17 } 从历史角度看,case语句Fortan中“计算goto”语句和Algol 60switch结构后裔。...早期Fortan中可以写出基于整数多路分支跳转: goto (15,50,100),I //如果I1,则跳转到标号15语句,如果3则跳转到标号100语句,如果不在1..3范围内,则这条语句不会执行...Algol 60switch语句也属于标号数组: switch S:=L15,L50,L100; ... goto S[I] 这里I和Fortan那个例子一样,一个类似于数组下标的东西。...last,step) do //...代码 end 其中from_to_by一个内部迭代器,它生成从firstlast,以step为增量一些列整数

    2K100

    细说枚举

    枚举 C# 中最有意思一部分,大部分开发人员只了解其中一小部分,甚至网上绝大多数教程也只讲解了枚举一部分。那么,我将通过这篇文章向大家具体讲解一下枚举知识。...使用枚举可以使我们代码简单易读,我们先来看一下两个代码段: // 代码段 1 void Method(int country) { switch (country) {...0 ,第二个枚举值对应整数常量 1 ,以此类推后面的枚举值分别对应整数常量 2 和 3 。...1.枚举之间转换 首先我要说明C# 中不支持不同枚举数组之间直接转换,所以如果想要实现不同枚举数组之间转换我们可以利用 CLR 宽松赋值兼容性这一特点来进行转换,需要转换两个枚举必须具有相同基础类型...3.枚举和数字之间转换 枚举转换为数字我们可以使用强转,例如 (int)Country.CN返回结果 0 。

    1.9K10

    Swift进阶四——流程控制

    更加强大Switch Switch语句会将一个值与多个可能模式进行匹配。 Switch语句一定得全面的,也就是说,给定类型里面的每一个值都得被考虑并且匹配到一个case。...当在switch语句里面使用时候,break导致switch语句立即结束它执行,并且转移控制switch语句结束花括号(})之后第一行代码上。...第二类模式用于全模式匹配,这种情况下你试图匹配值在运行时可能不存在。此类模式包括枚举用例模式、可选模式、表达式模式和类型转换模式。...你在Switch语句case标签中,do语句catch子句中,或者在if、while、guard和for-in语句case条件句中使用这类模式。...枚举用例模式出现在switch语句case标签中,以及if、while、guard和for-in语句case条件中。

    83910

    Java面试中常被问到几大技术难题

    4、在JAVA中如何跳出当前多重嵌套循环? 在Java中,要想跳出多重循环,可以在外面的循环语句前定义一个标号,然后在里层循环体代码中使用带有标号break语句,即可跳出外层循环。...5、switch语句能否作用在byte上,能否作用在long上,能否作用在String上在switch(expr1)中,expr1只能一个整数表达式或者枚举常量(更大字体),整数表达式可以是int基本类型或...Integer包装类型,由于,byte,short,char都可以隐含转换int,所以,这些类型以及这些类型包装类型也是可以。...显然,long类型不符合switch语法规定,并且不能被隐式转换int类型,所以,它不能作用于swtich语句中。String在jdk1.7以后可以使用。...也就是说,当一个static方法被调用时,可能还没有创建任何实例对象,如果从一个static方法中发出对非static方法调用,那个非static方法关联哪个对象上呢?

    59900

    Unity应用架构设计(10)——绕不开协程和多线程(Part 1)

    :把位置重置为初始状态 yield个比较晦涩技术,原因编译器帮我们做了太多工作(CompilerGenerate),导致我们无法理解内部实现。...Console.WriteLine(ie.Current); } Console.ReadLine(); } 假设你C#新手,你得好好消化一下上述逻辑,因为这是拨开迷雾第一层:了解为什么能够枚举一个集合...要解惑yield这是第二个阶段:能知道枚举怎样工作。 如果你很清楚上诉两个阶段内部原理之后,要理解Unity中Coroutine是非常简单,你会了解为什么它是伪“多线程”。...中断:传统方法代码块执行流程从上到下依次执行,而yield构成迭代块告诉编译器如何创建枚举行为,反编译得到结果可以看到,它们执行并不是连续,而是通过switch来从一个状态(state...)跳转到另一个状态 产出:yield 和return连用, yield return之后语句被编译器赋值给current变量,最终通过Current属性产出枚举项 小结 本文初衷想介绍如何在Unity

    1.4K60

    细说枚举.

    枚举 C# 中最有意思一部分,大部分开发人员只了解其中一小部分,甚至网上绝大多数教程也只讲解了枚举一部分。那么,我将通过这篇文章向大家具体讲解一下枚举知识。...使用枚举可以使我们代码简单易读,我们先来看一下两个代码段: // 代码段 1 void Method(int country) { switch (country) {...枚举之间转换 首先我要说明C# 中不支持不同枚举数组之间直接转换,所以如果想要实现不同枚举数组之间转换我们可以利用 CLR 宽松赋值兼容性这一特点来进行转换,需要转换两个枚举必须具有相同基础类型...从数字转换枚举我们有两种方法,一种使用强转,另一种使用 Enum 静态方发 。...定义标志枚举方法如下: 在上面的代码中你会发现一个规律,每个枚举值对应整数值都是 2n次方,这是为什么呢。

    63710

    【深入浅出C#】章节 2:数据类型和变量:基本数据类型和引用类型

    使用场景:常用整数类型,适用于大部分常规数值计算和存储。 语法和示例: int value = 1000; uint类型: 特点:无符号32位整数,取值范围为04294967295。...无论一维数组还是多维数组,它们在处理大量数据和进行矩阵运算等方面都非常有用。 2.4 类型转换C#中,类型转换将一个数据类型转换为另一个数据类型过程。...当目标类型范围比源类型更小,且没有数据丢失风险时,可以使用隐式转换。 隐式转换可以在相容类型之间进行,例如,从intlong、从floatdouble等。...Tip:类型转换C#实现不同数据类型之间相互转换一种机制。通过显式转换和隐式转换,我们可以在需要时将数据从一个类型转换为另一个类型,以满足特定业务需求。...以下一些指导原则: 数据范围和大小: 如果数据整数类型,并且范围较小,可以选择使用byte、short、int整数类型。 如果范围更大,可以选择long类型。

    49410

    C#Enum——枚举「建议收藏」

    大家好,我架构君,一个会写代码吟诗架构师。今天说一说C#Enum——枚举「建议收藏」,希望能够帮助大家进步!!! 枚举   枚举类型声明为一组相关符号常数定义了一个类型名称。...存在从任何枚举类型System.Enum 装箱转换,并且存在从 System.Enum 到任何枚举类型取消装箱转换。System.Enum 本身不是枚举类型。...第二个参数转换字符串,第三个参数一个bool,指定在进行转换时是否忽略大小写。...对于上面的代码,将返回1,作为一个对象,对应于TimeOfDay.Afternoon枚举值。在显式转换int时,会再次生成1。...在C#中,枚举真正强大之处它们在后台会实例化为派生于基类System.Enum结构。这表示可以对它们调用方法,执行有用任务。

    1.8K20

    Swift基础 枚举

    枚举值与Switch语句匹配 您可以将单个枚举值与switch语句匹配: directionToHead = .south switch directionToHead { case .north:...如Control Flow中所述,在考虑枚举情况时,switch语句必须详尽无遗。如果省略.west``case,此代码不会编译,因为它不考虑CompassPoint案例完整列表。...例如,假设库存跟踪系统需要通过两种不同类型条形码跟踪产品。一些产品以UPC格式标有1D条形码,使用数字09。每个条形码都有一个数字系统数字,然后五个制造商代码数字和五个产品代码数字。...您可以将每个关联值提取为常量(带有let前缀)或变量(带有var前缀),以便在switch大小写正文中使用: switch productBarcode { case .upc(let numberSystem...以下枚举对早期Planet枚举细化,其整数原始值表示每颗行星与太阳顺序: enum Planet: Int { case mercury = 1, venus, earth, mars, jupiter

    9200

    窥探Swift编程之强大Switch

    下方会通过一系列实例来介绍一下Switch语句用法。在Switch语句中,默认执行一条符合case就结束整个Switch语句,如果你想移除执行多个case子句,后面的部分会介绍。...Switch枚举一般形影不离,鉴于本篇博客介绍Switch语句,所以我们就不使用枚举定义匹配项了,不过在正式开放中,最好还是把匹配项定义成枚举形式,关于Swift中枚举内容请参考前面发布一片博客...下方把数字1,2,3转换成“老大”,“老二”,“超生了”字符串。由实例可知,匹配完 2 后,即使没加break语句,也不会继续执行后边case语句了,这一点还是比较人性化。...3.使用Switch语句匹配数字区间       这个特性也是灰常不错,在Swift中有区间运算符(1...5 表示15这个区间中所有整数)。...如果匹配整数,那么我们可以在Case匹配条件中使用区间。下方就是一个匹配数字区间一个实例,salary月薪,我们将通过这个月薪分一下等级,这时我们就会用到区间了。具体如下: ?

    1.3K100

    【深入浅出C#】章节 2:数据类型和变量:类型转换和类型推断

    以下一些常见基本类型转换整数类型转换:可以将一个整数类型转换为另一个整数类型,如将int类型转换为short、byte、long等。...枚举类型转换:可以将一个枚举类型转换为其底层整数类型,如将枚举类型转换int。这样可以在需要使用整数类型场景中进行操作。...下面隐式类型转换一些常见规则: 整数类型之间隐式转换: 从较小整数类型(如byte、short、int)向较大整数类型(如int、long)进行转换隐式。...例如,如果有一个枚举类型enum Color { Red, Green, Blue },它基础类型int,则可以隐式将Color类型转换int类型。...将较小范围浮点数类型(如float)转换为较大范围浮点数类型(如double)。 枚举类型和基础类型之间转换: 将枚举类型值隐式转换为其基础类型(通常是整数类型)。

    39210

    【C语言】case 关键字

    ⇿ 匹配 ⒈描述⇢ case 通常用作于 switch 分支语句当中,case 语句后面接常量表达式以及字符型常量。...⒊注意⇢在 case 表达式条件后面有一个冒号":",在编写程序时候千万不要忘记哟 代码示例如下 #include int main(void) { switch(1)... 表达式 提升类型后值,则转移控制标号为该 常量表达式 语句。...."); break; //正确,字符和整数可以相互转换 case 'A'+19: printf("..."); break; //正确,字符和整数可以相互转换 case 9.5: printf("...②分支知识点-switch case 在有些场景下可以配合 enum 枚举类型进行使用。注:枚举在这个系列博主也会详细说明,之所以枚举能够使用是因为枚举全称之为(枚举常量)

    73320
    领券