首页 > 代码库 > 拆箱,装箱,枚举,结构

拆箱,装箱,枚举,结构

枚举:

1、不能定义自己的方法

2、它们不能实现接口

3、不能定义属性和索引器

4、枚举成员之间用“,”隔开

5、枚举成员如果没有赋值,那么它的第一个值默认为0

6、后面的成员取值是前一个成员取值+1
7、枚举成员只能赋值为整型

类与结构:
1、类和结构都是创建对象的模版
2、
结构是值类型,类是引用类型,
结构不能有析构函数
3、类可以有析构函数
结构不能声明默认构造函数(没有参数的构造函数)
4、结构可以声明构造函数,但他们必须带参数,并且需要把所有字段都要赋值

5、在结构中初始化实例字段是错误的,在类中是可以初始化实例字段

6、结构的实例化可以不使用new运算符,类中必须使用new来进行实例化  

7、结构体不能像类一样被继承   

  class Program
    {
        //装箱、拆箱
        //static void Main(string[] args)
        //{
        //    int a = 10;
        //    string s = a.ToString();//装箱
        //   static void Main(string[] args) int num = Convert.ToInt32(s);//拆箱
        //    Console.WriteLine(num);//装箱,num会先转换为字符串再进行输出
        //}

        //枚举的使用
        //static void Main(string[] args)
        //{
        //    Student stu = new Student();
        //    stu.Name = "张三";
        //    stu.Age = 23;
        //    stu.Sex = Sex.男;
        //    stu.Grade = Grade.Y2;

        //    //枚举转换为整型数据
        //    Console.WriteLine((int)(stu.Grade));
        //    stu.Introduce();

        //    //字符串转枚举
        //    string s = "S2";
        //    Grade grade = (Grade)(Enum.Parse(typeof(Grade),s));//typeof是运算符,不是方法
        //    if(grade == Grade.S2)
        //    {
        //        Console.WriteLine("转换成功!");
        //    }           
        //}

        //结构的使用
        static void Main(string[] args)
        {
            //结构使用(方法一:使用new)
            //StructStudent strStudent = new StructStudent("张三",23,"男");
            //strStudent.SayHi();

            //结构使用(方法二:不使用new,直接声明)
            StructStudent strStudent;
            strStudent.name = "张三";
            strStudent.age = 23;
            strStudent.sex = "男";
            strStudent.SayHi();
        }
    }

  /// <summary>
    /// 学员结构
    /// </summary>
    public struct StructStudent
    {
        //字段
        public string name;
        public int age;
        public string sex;

        //结构中不能显示声明无参的构造方法
        //public StructStudent() { }

        public StructStudent(string name,int age,string sex)
        {
            this.name = name;
            this.age = age;
            this.sex = sex;
        }

        //方法
        public void SayHi()
        {
            Console.WriteLine("大家好!我叫:"+this.name+" 年龄:"+this.age+" 性别:"+this.sex);
        }
    }

/// <summary>
    /// 性别的枚举
    /// </summary>
    public enum Sex
    {
        男,女,中性
    }
    /// <summary>
    /// 年级枚举
    /// </summary>
    public enum Grade
    {
        S1,S2=5,Y2
    }
    class Student
    {
        private string name;
        public string Name
        {
            get { return name; }
            set { name = value; }
        }
        public int Age { get; set; }
        public Sex Sex { get; set; }
        public Grade Grade { get; set; }

        public void Introduce()
        {
            Console.WriteLine("姓名:"+Name+" 年龄:"+Age+" 性别:"+Sex+" 年级:"+Grade);
        }
    }