开发者

C#中的枚举和结构体用法解读

开发者 https://www.devze.com 2025-08-09 10:31 出处:网络 作者: 梦回大唐敲代码
目录枚举枚举的声明什么时候使用枚举枚举的赋值结构体结构体的使用结构体中的方法总结枚举
目录
  • 枚举
    • 枚举的声明
    • 什么时候使用枚举
    • 枚举的赋值
  • 结构体
    • 结构体的使用
    • 结构体中的方法
  • 总结

    枚举

    枚举的声明

    用enum关键字修饰,加枚举名

    enum 枚举名
        {
          值1,
          值2,
          值3,
          ````
        }

    什么时候使用枚举

    在php确定值的数量和值的时候使用枚举,规范程序的开发

    枚举的赋值

    枚举名 变量名=枚举名.值;
    Day nowDay = Day.星期一;

    结构体

    结构体的声明 用struct关键字修饰,加结构体名

    结构体的使用

    结构体中可以存储不同类型的数据,一般都是每个个体共同拥有一些属性时使用结构体

        struct Student
        {
          变量类型 变量名;
          变量类型 变量名;
        }

    结构体中的方法

    • <1>php如果方法是静态的那么不能使用结构体中非静态的属性
    • <2>如果方法是非静态的那么可以使结构体中的静态和非静态的属性
    • <3>调用静态方法需要用  "结构体名.方法名" 来调用,非静态方法直接用变量名调用
    • <4>调用静态属性需要用  "结构体名.属性名" 来调用,非静态属性直接用变量名调用            

    代码示例:

    using System;
    using System.Reflection;
    namespace 第十章枚举和结构体
    {
    #region 枚举
       
        //枚举的声明  用enum关键字修饰,加枚举名
        //枚举类型中默认存储的是int类型的,并且后面的值总是前一个值加一;
        enum Day : int   //枚举名后面可以加上限制,但是限制的类型只能是整形 int ,long ,short 等;
        {
            星期一 =0,
            星期二 =1, //枚举中的值可以通过等号改变
            星期三,
            星期四,
            星期五,
            星期六,
            星期日
        }
        #endregion
    #region 结构体
       
        //结构体的声明 用struct关键字修饰,加结构体名
        //结构体中可以存储不同类型的数据,一般都是
        struct Student
        {
            public string name;
            public  Xingb xingbie;  //结构体可以和枚举连用
            public  int  age;
            public  string banji;
            public bool youden;
        }
        enum Xingb
        {
            男,
            女
        }
      
        #endregion
        class Program
        {
         #region 结构体中的方法
            //定义一个结构体
            struct Teacher
            {
                public static string name;
                public int age;
                //非静态方法可以使用静态的属性
                public void Jieshao()
                {
                    Console.WriteLine("你好,我是:"+name+"我今年"+age);
                }
                //静态方法方法中不能使用非静态的属性
                public static void Kecheng()
                {
                    Console.WriteLine("我教你们语文课程"+name);
                }
            }
            #endregion
            static void Main(string[] args)
            {
    #region 枚举
              
                //小飞经常出去旅游,但是每次出去对日期总是很纠结,
                //用使用枚举帮小飞随机选择出去旅游的日子
                Random _ran = new Random();
                //因为枚举时从0开始,后面是前面数字加1,所以取值为 0到7,但不包括7.
                int _numDay = _ran.Next(0,7);
               
         #region 枚举与int类型的相互转换
                Day nowDay = Day.星期一;
                //枚举类型可以转换成int类型
                int num = (int)nowDay;
                //因为枚举类型默认是整数类型,并且第一个值从0开始,所以星期一转换成int 类型值就是0
                Console.WriteLine(num);
                //int转换为枚举类型(在这我们用随机数来确定小飞的出游时间)
                Day _nowDay1 = (Day)_numDay; //int转换枚举时要注意枚举中的值是否存在
                //打印小飞出游的时间
                Console.WriteLine(_nowandroidDay1 );
                #endregion
         #region 枚举类型与string类型之间的转换
                //将枚举转换成字符串
                Day strDay = Day.星期三;
                //枚举可以使用.ToString();方法
                string _strDay1 = strDay.ToString();
                Console.WriteLine(_strDaphpy1);
                //将string类型转换为枚举
                //在这我们用上面的随机数,先将随机数转换为string,方便学习string转换为枚举
                string _strDay2 = _numDay.ToString();
                //string中有个Parse方法可以将string转换为枚举
                                //  该方法需要两个参数,一个是类型,一个是string类型的变量
                                 //我们需要获取这个枚举类型 这里使用 typeof(类型)方法获取枚举类型
                                 //后面的代码只是将类型转换为枚举,但是我们需要转换为Day类型使用
                                 //所以加了一个强转
                Day str3NowDay = (Day)Enum.Parse(typeof(Day),_strDay2);
                //上面代码中的字符串可以是枚举中的字符串值 如"星期一",如果字符串是数字值,枚举中没有
                //该数字值那么不会报错,但是如果是 "星期一"这种类型的值,枚举中没有的话会报异常
                //打印出的结果跟上述一样
                Console.WriteLine(str3NowDay);
                #endregion
                #endregion
    #region 结构体
                //使用结构体首先要声明一个结构体类型
                Student stu1;
                //为结构体赋值,在结构体外赋值结构体中的变量必须是 Public(公开的)修饰的
                stu1.name = "张三";
                stu1.age = 16;
                stu1.xingbie = Xingb.男;
                stu1.banji = "六年级一班";
                stu1.youden = false;
                Student stu2;
                stu2.name = "李红";
                stu2.age = 15;
                stu2.xingbie = Xingb.女;
                stu2.banji = "六年级一班";
                stu2.youden = true;
                //打印李红的信息
                Console.WriteLine("姓名:"+ stu2.name+"\n年龄:" +
                          ""+ stu2.age+"\n性别:"+ stu2.xingbie+"\n优等生:"
                          + stu2.youden+"\n班级:"+ sKotVcNYtu2.banji);
         #region 结构体中方法的使用
                Teacher ter1;
                //静态属性和静态方法一样都需要用结构体名调用
                Teacher.name = "杨雪";
                //非静态属性和方法直接使用变量名调用
                ter1.age = 21;
                ter1.Jieshao();
                Teacher.Kecheng();
                #endregion
                #endregion
            }
        }
    }

    总结

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程客栈(www.devze.com)。

    0

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    关注公众号