练习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. asp手动给combox赋值

    ASPxComboBox cbSex = ASPxGridView1.FindEditFormTemplateControl("cmbUSER_SEX") as ASPxCombo ...

  2. shell-脚本-作用是发现前10个最占用磁盘空间的文件

    #!/bin/bash## 这个脚本的作用是发现前10个最占用磁盘空间的文件################定义这个脚本的全区变量##################################C ...

  3. 老男孩Day11作业:selectors版socket

    一.作业需求: 使用SELECT或SELECTORS模块实现并发简单版FTP 允许多用户并发上传下载文件 二.readme 一.作业需求: 使用SELECT或SELECTORS模块实现并发简单版FTP ...

  4. Linux硬件信息采集

    dmidecode: 简介: dmidecode命令通过读取DMI数据库获取硬件信息并输出.由于DMI信息可以人为修改,因此里面的信息不一定是系统准确的信息 dmidecode遵循SMBIOS/DMI ...

  5. bdd相关整理介绍

    BDD介绍 什么是BDD Behavior-driven development In software engineering, behavior-driven development (BDD) ...

  6. [SDOi2012]Longge的问题 BZOJ2705 数学

    题目背景 SDOi2012 题目描述 Longge的数学成绩非常好,并且他非常乐于挑战高难度的数学问题.现在问题来了:给定一个整数N,你需要求出∑gcd(i, N)(1<=i <=N). ...

  7. 文件句柄NSFileHandle

    //一.读取 //1.以只读方式打开 NSFileHandle *fh = [NSFileHandle fileHandleForReadingAtPath:txtPath]; //2.读取所有内容 ...

  8. java 实现在线阅读 .pdf

    1.资源的本地地址 2.设置响应头 3.代码实现 @ResponseBody @RequestMapping(value = "/read") @ApiOperation(valu ...

  9. [PowerShell]Quote in String

    今天遇到一个问题,如何在Select-String的Pattern参数里能使用双引号 比如 Select-String -path . -pattern "Lines: <span c ...

  10. C++_类继承3-动态联编和静态联编

    程序调用函数时,将使用哪个可执行代码块呢?编译器负责回答这个问题. 将源代码中的函数调用解释为特定的函数代码块被称为函数名联编(binding). 在C语言中,这非常简单,因为每个函数名对应一个不同的 ...