.Net基础篇_学习笔记_第八天_复杂数据类型(常量/枚举/结构)
1.常量:
声明的常量的语法:
const 变量类型 变量名=值;
最大的特点就是,声明了常量后,就不能再被重新赋值。
2.枚举
语法:
[public] enum 枚举名
{
值1,
值2,
值3,
........
}
public:访问修饰符。公开的公共的,哪都可以访问。
enum:关键字,声明枚举的关键字
枚举名:要符合Pascal命名规范
enum枚举在main()函数中不能使用,所以将枚举声明到命名空间的下面,类的外面,表示这个命名空间下,所有的类都可以使用这个枚举。
枚举就是一个变量类型 ,int--double string decimal.
只是枚举声明、赋值、使用的方式跟那些普通的变量类型不一样。
枚举需要自己写,内部自己编辑。
1 using System.Collections.Generic; 2 using System.Linq; 3 using System.Text; 4 using System.Threading.Tasks; 5 6 namespace 第六天_流程语句 7 { 8 public enum Moon 9 { 10 阴, 11 晴, 12 圆, 13 缺 14 } 15 class Program 16 { 17 static void Main(string[] args) 18 { 19 Moon _moon = Moon.晴; 20 Console.WriteLine(_moon); 21 Console.ReadKey(); 22 23 } 24 } 25 }
我们可以将一个枚举类型的变量跟int类型和string类型互相转换。
枚举类型与int类型转换
枚举类型默认从0开始,枚举类型默认依次递增。 region标签的使用。#region 标签名称 #endregion
枚举类型默认是跟int类型相互兼容的,所以可以通过强制类型转换的语法互相转换。
当转换一个枚举中没有的值的时候,不会抛异常,而是直接将数字显示出来。
枚举类型与string类型转换
所有类型都能转换成string类型
枚举同样也可以跟string类型互相转换,如果将枚举类型转换成string类型,则直接调用ToString().
三种转化方式:
Convert.int32(); int.parse();
int.TryParse();
Enum.Parse();//调用Parse()方法的目的就是让它帮助我们将一个字符串转换成对应的枚举类型。调用方法,需要告诉(提供给)方法一些必要的条件,即参数。
如果将字符串转换成枚举类型则需要下面这样一行代码:
(要转换的枚举类型)Enum.Parse(typeof(要转换的枚举类型),"要转换的字符串");
string s="0";
QQState state=(QQState)Enum.Parse(typeof(QQState),s);
如果转换的字符串是数字,则就算枚举中没有,也会不会抛异常。
如果转换的字符串是文本,如果枚举中没有,则会抛出异常。
1 using System.Collections.Generic; 2 using System.Linq; 3 using System.Text; 4 using System.Threading.Tasks; 5 6 namespace _Enum 7 { 8 class Program 9 { 10 11 enum QQState 12 { 13 OnLine=1, 14 OffLine, 15 Leave, 16 Busy, 17 QMe 18 } 19 20 static void Main(string[] args) 21 { 22 bool b = true; 23 while (b) 24 { 25 Console.WriteLine("请输入您要选择的登陆状态:1--OnLine,2--OffLine,3--Leave,4--Busy,5--QMe"); 26 string _input = Console.ReadLine(); 27 switch (_input) 28 { 29 case "1": 30 QQState s1 = (QQState)Enum.Parse(typeof(QQState), _input); 31 Console.WriteLine("您现在的登陆状态是{0}", s1); 32 break; 33 case "2": 34 QQState s2 = (QQState)Enum.Parse(typeof(QQState), _input); 35 Console.WriteLine("您现在的登陆状态是{0}", s2); 36 break; 37 case "3": 38 QQState s3 = (QQState)Enum.Parse(typeof(QQState), _input); 39 Console.WriteLine("您现在的登陆状态是{0}", s3); 40 break; 41 case "4": 42 QQState s4 = (QQState)Enum.Parse(typeof(QQState), _input); 43 Console.WriteLine("您现在的登陆状态是{0}", s4); 44 break; 45 case "5": 46 QQState s5 = (QQState)Enum.Parse(typeof(QQState), _input); //string转换成Enum类型 47 Console.WriteLine("您现在的登陆状态是{0}", s5); 48 break; 49 } 50 } 52 Console.ReadKey(); 54 } 55 } 56 }
结构
可以一次性生成多个不同类型的变量;
[public] struct 结构名
{
成员;//变量. 》》字段 变量只能存储一个值,字段可以存储多个值; 字段要求必须在前面加个下滑线。
}
1 using System.Collections.Generic; 2 using System.Linq; 3 using System.Text; 4 using System.Threading.Tasks; 5 6 namespace 结构 7 { 8 public struct Person //结构和枚举本质是类型,需要单独定义一下; 9 { 10 public string _name; 11 public int _age; 12 public char _gender; 13 } 14 class Program 15 { 16 static void Main(string[] args) 17 { 18 Person liangPerson; 19 liangPerson._name = "liang"; 20 liangPerson._gender = '男'; 21 liangPerson._age = 25; 22 } 23 } 24 }
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namespace 结构 8 { 9 public struct Person //结构和枚举本质是类型,需要单独定义一下; 10 { 11 public string _name; 12 public int _age; 13 public Gender _gender; 14 } 15 public enum Gender 16 { 17 男, 18 女 19 } 20 class Program 21 { 22 static void Main(string[] args) 23 { 24 Person liangPerson; 25 liangPerson._name = "梁俊可"; 26 liangPerson._gender = Gender.男;//liangPerson._gender = '男'; 27 liangPerson._age = 27; 28 Console.WriteLine("我叫{0},我的性别是{1},我今年{2}岁了",liangPerson._name,liangPerson._gender,liangPerson._age); 29 Console.ReadKey(); 30 } 31 } 32 }