10. 结构和枚举

1、结构:

  结构体 (struct) 是由一系列具有相同类型或不同类型的数据构成的数据集合,叫做结构。结构体最主要的作用就是封装,做成你想要的数据类型封装的好处就是可以再次利用。

  (1结构是使用 struct 关键字定义的,与类相似,都是可以包含数据成员和函数成员的数据结构;

  (2结构是值类型,他在栈中分配空间;而类是引用类型,他在堆中分配空间,栈中保存的只是引用;

  (3)需将结构声明到命名空间的下面,类的外面。表示这个命名空间下的所有类都可以访问这个结构;

  (4)结构体在实例化时,可以 new 实例化对象,也可以不 new 。不 new 时,则成员变量必须声明为 public

2、初始化结构成员:

  、使用参数化构造函数,即使用 new 关键字;
  二、在声明结构后分别访问成员。

 1     //例:创建一个职员的结构体,对他的名字、年龄等进行封装。以后进行调用的时候可以实例化不同的张三、李四等再次利用
 2     public struct Clerk
 3     {
 4         //声明变量
 5         public string name;                                 //不能直接对其赋值
 6         public int age;
 7         public string department;
 8         public char gender;
 9         public static string str = null;                    //而静态变量可以初始化
10     }
11     class Program
12     {
13         static void Main(string[] args)
14         {
15             //分别访问成员来初始化结构成员
16             Clerk zs = new Clerk ();                        //实例化
17             zs.name = "张三";
18             zs.gender = '';
19             zs.age = 29;
20             zs.department = "人力部";
21             Console.WriteLine("姓名:{0}\t性别: {1}\t年龄:{2}\t部门:{3}",zs.name,zs.gender,zs.age ,zs.department );
22             Console.ReadKey();              
23         }
24     }

3、枚举

  (1)枚举能使代码更加清晰,他允许使用描述性的名称表示整数值;

  (2)枚举使代码更易于维护,有助于确保给变量指定合法的、期望的值;

  (3)枚举使用 enum 关键字来声明,与类同级。枚举可以在结构中被调用;

  (4)枚举就是一个变量类型。本质也是一个“”,继承 System.Enum ;

  (5)枚举项,本质就是这个特殊类的字段,类型就是值类型

  (6)枚举项,如果起“序号”,可以只给第一项起序号即可,系统可以自动递增:。

4、结构跟枚举的区别:

  通俗的说,结构就是定义一些变量的集合,在后面使用的时候对它的变量进行重新赋值。而枚举就是一个变量,给这个变量多种赋值,在后面使用的时候取得这个变量的某种赋值。

5、枚举与字符串相互转换方法:

         一、枚举转字符串:如 myEnumName.ToString();或 Conver.ToString(myEnumName);

         二、(枚举类型)Enum.Parse(typeof(枚举类型),要转换的字符串)//将字符串转换成枚举类型。

 1     //例1:创建枚举
 2     public enum Gender
 3     {
 4         男,
 5         女,
 6         不男不女=3,
 7     }
 8     
 9     class Program
10     {
11         static void Main(string[] args)
12         {
13             //引用枚举
14             Gender zsGender = Gender.女;
15             Console.WriteLine(zsGender);
16 
17             //转换为整型
18             Console.WriteLine((int )zsGender);
19 
20             //int转换为枚举
21             int myint = 0;
22             Console.WriteLine((Gender)myint);
23 
24             //字符串转换成枚举
25             string mystr = "3";
26             Console.WriteLine((Gender)Enum.Parse(typeof(Gender),mystr));
27             Console.ReadKey();
28         }
29     }
 1     //例2:新建枚举
 2     public enum HeroState
 3     {
 4         //可以给枚举类型添加序号,未添加时默认为从0开始的序号
 5         walking=20,                                            
 6         runing=40,
 7         jumping=60,
 8         attack=80,
 9         hurt = 100,
10         dead
11     }
12     class Program
13     {
14         static void Main(string[] args)
15         {
16             HeroState hs = HeroState.hurt;
17             //数值类型的转换
18             int intNum = Convert.ToInt32(hs);
19             Console.WriteLine("枚举输出为:{0}",hs);
20             Console.WriteLine("转换为数值输出为:{0}",intNum);
21             Console.ReadKey();
22         }
23     }

 

posted @ 2017-10-04 23:21  LiuChangwei  阅读(370)  评论(0编辑  收藏  举报