练习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. 配置Java web的一次经历

    最近在完成数据库作业,重新拾起了以前学过的Java,讲下自己的 Java web 配置过程. 1.安装 Tomcat 在官网下载 Tomcat7.0版本:https://tomcat.apache.o ...

  2. 【bzoj1022】[SHOI2008]小约翰的游戏John 博弈论

    Description 小约翰经常和他的哥哥玩一个非常有趣的游戏:桌子上有n堆石子,小约翰和他的哥哥轮流取石子,每个人取 的时候,可以随意选择一堆石子,在这堆石子中取走任意多的石子,但不能一粒石子也不 ...

  3. Sample-Code:Translator

    <h2>My Spanish Translator</h2> <p> Enter your text in English:  </p> <p&g ...

  4. JUC包下CyclicBarrier学习笔记

    CyclicBarrier,一个同步辅助类,在API中是这么介绍的: 它允许一组线程互相等待,直到到达某个公共屏障点 (common barrier point).在涉及一组固定大小的线程的程序中,这 ...

  5. Qt 学习之路 2(37):文本文件读写

    Qt 学习之路 2(37):文本文件读写 豆子 2013年1月7日 Qt 学习之路 2 23条评论 上一章我们介绍了有关二进制文件的读写.二进制文件比较小巧,却不是人可读的格式.而文本文件是一种人可读 ...

  6. 【Leedcode】Insertion Sort List

    Sort a linked list using insertion sort. /** * Definition for singly-linked list. * struct ListNode ...

  7. Rails应用系列(1):初识Rails

    第一个Rails应用 Rails是一个"模型-视图-控制器"框架(MVC).是用Ruby写的,所以要对Ruby要有一定的了解才能对rails框架深入学习.其实Ruby与Rails就 ...

  8. kotlin spring @value 注解

    spring boot和kotlin里静态类使用@Value注解配置解决方案前言spring boot里默认是不能给静态属性使用@Value赋值的.所以这里使用中间变量过渡绑定. 方案//applic ...

  9. Pollard_Rho 整数分解法【学习笔记】

    引文:如果要对比较大的整数分解,显然之前所学的筛选法和是试除法都将不再适用.所以我们需要学习速度更快的Pollard_Rho算法. 算法原理: 生成两个整数a和b,计算p=gcd(a-b, n),知道 ...

  10. ul模拟select,位置,数据,是否可输入及输入提示效果都可作为参数直接传入

    转发请注明出处,虽然转发几率不大... HTML <span class="theContainer"></span> CSS body {padding: ...