练习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. 类4(可变数据成员/基于const的重载)

    可变数据成员: 有时我们希望能修改某个类的数据成员,即使是在一个 const 成员函数内.可以通过在变量的声明中加入 mutable 关键字来声明一个可变数据成员.mutable 是为突破 const ...

  2. 题解 P1255 【数楼梯】

    题目链接 好吧,承认python 轻松水过 代码奉上: n = int(input()) #定义,输入 a=1 #初始的变量赋值 b=1 n-=1 #我的毒瘤的循环不得不加上这句话 if n > ...

  3. 题解 P1534 【不高兴的津津(升级版)】

    题目链接 不算太难.就是题目有歧义. wa了好几次才发现.上一天要是小于8的话.结算是昨天一个负值在加上今天课时数.再减去8.233.... 而不是上一天小于8个小时.就清零了..大家要注意(ps:题 ...

  4. Java面向对象之异常(异常处理方式)

    一.基础概念 (1)异常:Java程序在运行时期发生的不正常情况. Java就按照面向对象的思想对不正常情况进行描述和对象的封装. (2)异常问题分类: (Throwable:定义对于问题共性的功能. ...

  5. linux系统安全及应用——PAM安全认证

    一.PAM认证模块介绍 PAM认证模块,叫做可插拔式的认证模块.一项重要的功能就是为了加强su命令的使用控制,可以借助于PAM认证模块,只允许极个别用户使用su命令进行切换.PAM提供了对所有服务进行 ...

  6. Linux系统管理之硬盘管理

    硬盘是计算的重要组成部件之一,硬盘为操作系统提供持久话存储的功能,在Linux硬盘设备的性能和好坏可能关系到生成线的安全和用户体验等等.熟练的掌握硬盘管理相关的信息能让我们处理起这些问题来得心应手. ...

  7. (WIN7)delphi7运行关闭出现cannot creat file"C:\program file\borland\delphi7\bin\initcc32.exe拒绝访问

    1. 程序右键,以管理权限运行.2. 将Delphi7目录只读取消.WIN7以上的操作系统正常运行程序不是以管理员方式运行的

  8. ajax beforeSend中无效果

    asnyc:false 与beforesend 同时使用 无效果

  9. External Tools

    Preferences偏好设置-External Tools External Tools: External Script Editor:外部脚本编辑器,通过此项可以切换您所擅用的脚本的编辑器 Ed ...

  10. flex弹性布局,好用

    一直不太喜欢自己布局前端页面,都是扒别人的页面 ,最近在练习小程序,页面无处可扒,只有自己布局 发现flex弹性布局真好用,布局起来很简单,实现的效果也很好,赞 以后可以自己写一点前端了,哈哈