练习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和python之间的参数传递

        我们在使用shell调用其他语言的程序的时候,希望能够便捷的从shell中输入参数,然后由目标程序接收参数并运行,这样就省去了每次需要在原程序进行修改带来的麻烦,这里介绍一下如何从shell中 ...

  2. css清除浮动的8种方法以及优缺点

    浮动会使当前标签产生上浮的效果,同时会影响到前后的标签.父级标签的位置及width height 属性.而且同样的代码,在各种浏览器中效果可能不同,这样让清除浮动更难了.清除浮动引起的问题有很多的方法 ...

  3. 洛谷P3711 仓鼠的数学题(伯努利数+多项式求逆)

    题面 传送门 题解 如果您不知道伯努利数是什么可以去看看这篇文章 首先我们把自然数幂和化成伯努利数的形式 \[\sum_{i=1}^{n-1}i^k={1\over k+1}\sum_{i=0}^k{ ...

  4. avascript的匿名函数

    一.什么是匿名函数? 在Javascript定义一个函数一般有如下三种方式: 函数关键字(function)语句: function fnMethodName(x){alert(x);} 函数字面量( ...

  5. python基础之内置函数(一)

    内建函数都在 _builtins_ 里面 (1)abs() 取绝对值 adb(-10) 10 (2)bool()将参数转换成布尔型,返回值是True或False 参数是数字时,0返回False,其他任 ...

  6. SpringBoot设置默认启动页的2种方式

    方式一: 继承WebMvcConfigurerAdapter,重写addViewControllers. @Configurationpublic class WebConfigurer extend ...

  7. 使用octave符号运算求解不定积分、微分方程等(兼容matlab)

    1.求解1/(1+cos(x))^2的不定积分. 在和学生讨论一道物理竞赛题的时候,出现了这个函数的积分求解需求.查积分表也可写出答案.但是可以使用octave的符号运算工具箱来做. syms x; ...

  8. 关于NPOIExcel导出excel

    1.支持导出多个sheet文件 /// <summary> /// 导出到Excel并下载(html) /// </summary> /// <param name=&q ...

  9. JavaWeb学习笔记(五)—— request

    一.request概述 request是Servlet.service()方法的一个参数,类型为javax.servlet.http.HttpServletRequest.在客户端发出每个请求时,服务 ...

  10. python学习之路---day02

    一:while循环 while 条件语句 #如果条件成立则执行下面的循环语句 循环语句 eg1:1+2+3+4+5......+100=? num=0 #给num和sum赋初值 sum=0 while ...