练习1:   将枚举类型强转成int类型

  1. namespace _04.枚举类型的练习01
  2. {
  3. //声明一个QQState类型的枚举
  4. public enum QQState
  5. {
  6. OnLine,
  7. OffLine,
  8. Leave,
  9. Busy,
  10. QMe
  11. }
  12. class Program
  13. {
  14. static void Main(string[] args)
  15. {
  16. QQState state = QQState.OnLine;
  17. //枚举类型默认是可以和int类型互相转换的,即枚举类型和int类型是兼容的.
  18. int n = (int)state;
  19. Console.WriteLine(n);
  20. Console.WriteLine((int)QQState.OffLine);
  21. Console.WriteLine((int)QQState.Leave);
  22. Console.WriteLine((int)QQState.Busy);
  23. Console.WriteLine((int)QQState.QMe);
  24. Console.ReadKey();
  25. }
  26. }
  27. }
 
通过以上代码我们可以知道枚举类型可以被强制,转换成int类型的.并且,由此我们可以知道,他们的默认下标是从0开始,我们还可以更改它的默认下标.来适应一些运行时的情况.

就像下列代码这样:
  1. public enum QQState
  2. {
  3. OnLine=2,
  4. OffLine,
  5. Leave=5,
  6. Busy,
  7. QMe
  8. }


练习2:   将int类型强转成枚举类型.
 如果:遇见转换不了的int类型(超出了枚举类型下标的范围),则输出,原来的int类型的数字.
  1. namespace _05.枚举类型的练习02
  2. {
  3. /// <summary>
  4. /// 声明一个QQState类型的枚举
  5. /// </summary>
  6. public enum QQStare
  7. {
  8. OnLine,
  9. OffLine,
  10. Leave,
  11. Busy,
  12. QMe
  13. }
  14. class Program
  15. {
  16. static void Main(string[] args)
  17. {
  18. //将int 类型强转成枚举类型
  19. int n1 = 3;
  20. QQStare state = (QQStare)n1; //将int类型的n1强转成QQState类型
  21. Console.WriteLine(state);
  22. Console.ReadKey();
  23. }
  24. }
  25. }
 

练习3:  枚举类型转换成string类型
注意: 在C#中所有的数据类型都可以转换成String类型.
  1. namespace _06.枚举类型的练习03
  2. {
  3. /// <summary>
  4. /// 声明一个QQState类型的枚举
  5. /// </summary>
  6. public enum QQStare
  7. {
  8. OnLine,
  9. OffLine,
  10. Leave,
  11. Busy,
  12. QMe
  13. }
  14. class Program
  15. {
  16. static void Main(string[] args)
  17. {
  18. //在C#中所有的类型都可以转换成string类型.
  19. //比如:
  20. int n1 = 10;
  21. string s1 = n1.ToString(); //将整型转换成string类型
  22. Console.WriteLine("int类型被转换成的string类型:{0}",s1);
  23. QQStare state = QQStare.OffLine;
  24. //我们也可将枚举类型转换成string类型
  25. string s2 = state.ToString();
  26. Console.WriteLine("QQState(枚举)类型,被转换出的string类型:{0}",s2);
  27. Console.ReadKey();
  28. }
  29. }
  30. }
 
练习4:  将字符串转换成枚举类型
为什么没有Convert.ToEnum();呢??  因为枚举类型的名字是我们自己命名的,所以不能使用
Convert.ToEnum();的方法来转换.
  1. namespace _07.枚举的练习04
  2. {
  3. /// <summary>
  4. /// 声明一个QQState类型的枚举
  5. /// </summary>
  6. public enum QQStare
  7. {
  8. OnLine,
  9. OffLine,
  10. Leave,
  11. Busy,
  12. QMe
  13. }
  14. class Program
  15. {
  16. static void Main(string[] args)
  17. {
  18. string s = "0";
  19. //将string类型转换成枚举类型
  20. //调用Parse();方法的的目的就是为了让它将我们的一个字符串转换成相应的枚举类型.
  21. //我们怎么获得我们已经定义的枚举的类型呢?
  22. //我们使用typeof来实现 type:类型,of:谁的 Typeof:谁的类型
  23. //typeof(QQState); 这一句话的意思就是获取QQState这个枚举的类型
  24. //完整的写法
  25. QQStare state = (QQStare)Enum.Parse(typeof(QQStare), s);
  26. Console.WriteLine(state);
  27. Console.ReadKey();
  28. }
  29. }
  30. }
 
QQStare state = (QQStare)Enum.Parse(typeof(QQStare), s);    //这一行是转换的重点,里面涉及反射等知识后面会学到。
当string类型转换后的值,再枚举中无法找到,就会抛出一个异常。


总结:
(1)我们可以将一个枚举类型的变量和int类型或者string类型互相转换。
(2)枚举类型默认是和int类型相互兼容的,所以可以通过强制转换的语法互相转换。
         当转换一个枚举中没有的值时,不会抛出异常,而是直接将数字输出。
(3)任何类型都可以转换转换成string类型。
         直接再要转换的值后面加入.Tostring就可以转换成string类型了。
(4)string类型也可以转换成枚举类型,转换时我们需要使用下面的语法式子。
 (枚举类型) 枚举变量=(枚举类型)Enum.Parse(TypeOf(枚举类型),"需要转换的string类型");
        当转换一个枚举中没有的值时,如果转换的是一个数字,枚举中即使没有也不会抛出异常,如果转换的不是数字,枚举中也没有,那么则会抛出一个异常.

03.枚举和string以及int类型之间的转换的更多相关文章

  1. C++string,char* 字符数组,int类型之间的转换

    string.int 常见类型之间相互转换 int & string 之间的转换 C++中更多的是使用流对象来实现类型转换 针对流对象 sstream实现 int,float 类型都可以实现 ...

  2. String,Integer,int类型之间的相互转换

    String, Integer, int 三种类型之间可以两两进行转换 1. 基本数据类型到包装数据类型的转换 int -> Integer (两种方法) Integer it1 = new I ...

  3. string类型和int类型之间的转换

    一.string转int 1. 使用string流 /* 字符串转整型 */ /* * istringstream:从 string 读取数据 * ostringstream:向 string 写入数 ...

  4. 【String与基本类型之间的转换】以及【进制转换】

    1. 基本数据类型---->字符串类型: 方法一:使用连接一个空字符串,例如  基本数据类型+“” : 方法二:静态方法 String.valueOf(),具体有: String.valueOf ...

  5. char类型和int类型之间的转换

    在视屏课程第二章里,我们已经学习了一些常用的数据类型转换.然而,有一些时候我们会经常会遇到将char类型转换成int类型,或者需要将int类型转换为char类型的情况. 这里,我们来探讨一下这种不常用 ...

  6. c#中RGB与int类型之间的转换

    Color color = Color.FromArgb(0, 0, 255);int colorInt = ParseRGB(color); --------------------- int Pa ...

  7. golang 中string和int类型相互转换

    总结了golang中字符串和各种int类型之间的相互转换方式: string转成int: int, err := strconv.Atoi(string)string转成int64: int64, e ...

  8. NSString / NSData / char* 类型之间的转换

    转自网络: NSString / NSData / char* 类型之间的转换 1. NSString转化为UNICODE String: (NSString*)fname = @“Test”; ch ...

  9. C++四种类型之间的转换

    C风格的强制类型转换(Type Cast)很简单,不管什么类型的转换统统是: TYPE b = (TYPE)a. C++风格的类型转换提供了4种类型转换操作符来应对不同场合的应用. const_cas ...

随机推荐

  1. shell传参给matlab问题解决办法

    之前需要通过shell脚本传参给matlab程序,但是遇到一些问题,现将我遇到的问题分享出来,给遇到同样问题的人一些借鉴. shell部分脚本Execl.sh: /usr/bin/python /ho ...

  2. 5.EM

  3. Python3之时间模块time & datetime & calendar

    一. 简介 python 提供很多方式处理日期与时间,转换日期格式是一个常见的功能. 时间元组:很多python函数用一个元组装起来的9组数字处理时间. python中时间日期格式化符号: %y 两位 ...

  4. 单据头->实体服务规则中根据单据类型设置可见性或必录等

  5. ARKit的使用

    //创建场景 let scene = SCNScene() /* //1.几何 let box = SCNBox.init(width: 0.1, height: 0.1, length: 0.1, ...

  6. VIA格式转COCO格式

    VIA是一款很好用的标注软件,基于网页,不过现在开源的大多数目标检测器都是基于COCO训练和测试的,我们如果想要训练自己的数据集,要么修改源代码,要么将自己的标注格式改成COCO格式,采用第一种方法很 ...

  7. IntelliJ IDEA(Android Studio)设置代码的快捷编辑模板Live Templates

    1.file---->setttings 2.editor--->live template 3.点击右侧的+ 4.设置模板 注意:Abbreviation为代码模板的缩写.

  8. C++_类入门4-String类

    很多应用程序都需要处理字符串.C语言在string.h(C++中为cstring)中提供了一系列的字符串函数,很多早期的C++实现为处理字符串提供了自己的类. string类是由头文件string支持 ...

  9. [BZOJ 1489][HNOI2009]双递增序

    传送门 满满的负罪感,昨晚的刷题历程:写几道难题吧-->算了,还是只切道水题吧-->RNG赢了...... 背包一下就行了 #include <bits/stdc++.h> u ...

  10. C# 判别系统版本以及Win10的识别办法

    首先得知道操作系统和主次版本的对应关系 我们可以用Environment.OSVersion来判断当前操作系统 && Environment.OSVersion.Version.Min ...