C#基础之结构体&枚举&数组

来源:互联网 发布:vr用什么软件 编辑:程序博客网 时间:2024/05/18 18:53

枚举

    枚举的话,主要有两个比较吸引我的地方:一、规范常量的声明、使用和存储;二、不用记忆,方便枚举值的使用。

    从规范性上来说,主要是避免同一类别的不同命名问题。诸如,在我们需要存储用户性别时,如果让用户自由输入信息,那么对于男性来说,用户可能输入“老爷们”、“男生”、“男同胞”和“非女生”等等一系列可以表示用户性别为男性的名词。这就为我们日后使用性别这个字段进行数据操作时带来很大的麻烦,例如我们想要统计一个系统中男性的工资情况,我们就不得不查找前面提到的每一个用户自由输入的表示男性的名词。
    所以,我们必须在用户输入信息时进行必要的强制性规范。在VB中我们可以通过ListBox的属性实现这个功能;而在C#中,我们可以通过枚举实现规范用户输入信息的功能。

语法

    【访问修饰符】+关键字+枚举名称

    {

      值1,

      值2,

      …

    }

代码示例

<span style="font-family:KaiTi_GB2312;font-size:24px;">public enum Gender   //Public  是访问修饰符    {         男,        女    //最后可加可不加,    }</span>

应用实例:

 
<span style="font-family:KaiTi_GB2312;font-size:24px;"> class Program    {        static void Main(string[] args)        {            Person Joker;            Joker._name = "你猜";            Joker._gender =Gender.男 ;  //调用枚举值            Joker._age = 23;            Console.WriteLine(Joker );            Console.ReadKey();        }    }</span>

    正如我们上面代码中“Joker._gender=Gender.男”写到的这样,用户再输入性别时只能选择枚举值“Gender.男”或“Gender.女”而不是自由输入各种表示男性或者女性的同义词了。

结构体

    有没有这样的纠结:在向系统中输入用户的原始信息时,姓名、性别、年龄和工资等一系列的字段都需要一个个重复性的声明和赋值。一个两个用户的信息这样录入系统还好,那要是成千上万个用户的信息呢?估计程序员会在接到这种任务时就得挂了。这时,为一次性声明多个不同变量提供解决方案的结构体应用而生。

语法

     [访问修饰符]+关键字+结构体名称

     {

     结构体的具体代码

      }

代码示例

<span style="font-family:KaiTi_GB2312;font-size:24px;"> public struct Person    //结构体,存储个人信息    {        public string  _name;        public Gender _gender;        public int _age;    }</span>

使用示例

<span style="font-family:KaiTi_GB2312;font-size:24px;">class Program    {        static void Main(string[] args)        {            Person Joker;            //实例化一个名为joker的结构体,用以存储其相关信息            Joker._name = "刘超";   //结构体joker的名字            Joker._gender =Gender.男 ;  //结构体joker的性别            Joker._age = 23;           //结构体joker的年龄            Console.WriteLine(Joker );            Console.ReadKey();        }    }</span>

    声明这样一个负责存储用户个人相关信息的结构体后,我们就不必像下面这样去存储用户的个人信息了。大家可以回想下自己之前不用结构体存储大量类似用户信息的经历,是不是有种往事不堪回首的憨笑。

数组

    个人认为数组和结构体是一对不错的基友。结构体为一次性多个不同变量的声明提供了解决方案;数组则为程序员一次性声明同一类型的N个变量带来了福音。

语法

方法一:

        数据类型+[]+nums=new 数据类型(和前面的保持一致) []{数组的值};

方法二:

        数据类型+[] num=new+数据类型+[数组长度](注:数组长度-1=索引(下标))

方法三:

        数据类型+[] nums=new+数据类型+[具体的长度值]+{与长度值对应的数组元素,不能多不能少}

方法四:

       数据类型+[] nums={直接写元素即可}

    PS:数组的声明方式比较灵活,大家可以是具体情况而定;鉴于数组声明的方式比较多,我就不一一举例了,大家可以参照下面的使用举例自己尝试数组的声明代码。

使用示例

<span style="font-family:KaiTi_GB2312;font-size:24px;">namespace 最大值和最小值{    class Program    {        static void Main(string[] args)        {            //计算数组中的最大值和最小值            int [] nums=new int []{2,323,343,456,45,786,-22,-1,323,-966,865};            int max = int.MinValue ;   //声明max以存储最大值            int min= int.MaxValue ;   //声明min以存储最小值            for (int i = 0; i < nums.Length; i++)            {                 if (nums[i]<min)                {                    min = nums[i];                }                if (nums[i]>max )                {                    max = nums[i];                }                //上面连个if语句并没有改变数组nums中的元素            }            Console.WriteLine("最大值{0}最小值{1}",max,min );            Console.ReadKey(true );        }    }}</span>

    通过上面的代码,大家不难看出数组和循环的结合可以为我们提供不同问题的多种解决方案,从而提高我们的效率。上面仅仅是一个计算一组数值类型数据的max和min的解决方案。实际上通过数组和循环结构的组合,我们可以实现核实信息、防火墙、文件检索等一系列我们想到的想不到的功能。而数组元素的值可以是各种类型,下面给出大家一个字符串数组的小demo:
<span style="font-family:KaiTi_GB2312;font-size:24px;">namespace 方法调用之分割数组{    class Program    {        static void Main(string[] args)        {             string[] names = new string[] { "张三","李四","王五","赵六","路人甲","路人乙","路人丁"};             Program.AddName(names);            //Console.WriteLine(strName + names[names.Length - 1]);               //names.Length - 1是数组元素的下标            //names[names.Length - 1]  数组中的元素                        Console.ReadKey();        }        public static void AddName(string []names)        {            string strName = "";            for (int i = 0; i < names.Length; i++)            {                strName += names[i] + "|";            }            Console.WriteLine(strName);        }    }}</span>

    这个小demo的功能就是分割字符串数组的元素。

总结

    枚举、结构体和数组是我们程序员编写代码的小工具,这三者很好的体现了面向对象思想中的代码复用思想。

       Thanks For Your Time Enjoy~

——joker 

1 0