结构,枚举

1.结构  struct

             所有的值类型都是一个结构,所有的引用类型都是一个Class 类   (结构是值类型,而类是引用类型)

                struct 类型是一种值类型 自定义类型   通常用封装小型相关变量组。             

                由于结构不使用引用,因此结构没有标识;无法区分具有相同数据的两个类型实例。        

                与类不同,结构的实例化可以不适用new运算符            

结构的实例化有两种方式:
            struct MyStr
            {
                public int i;
            }            
            MyStr ms1 = new MyStr();
           MyStr ms2;
           ms2.i=10;
struct Goods   //相当于模板
    {
        public void Print()
        {
            Console.WriteLine(Name + Price + Count);
        }
        public Goods(string name)   //有参的构造函数
        {
            this.name = "bbb";
            this.price = 1.5;
            this.count = 5;
        }
        string name;
        public string Name
        {
            get
            {
                return name;
            }
            set
            {
                name = value;
            }
        }
        double price;
        public double Price
        {
            get
            {
                return price;
            }
            set
            {
                price = value;
            }
        }
        int count;
        public int Count
        {
            get
            {
                return count;
            }
            set
            {
                count = value;
            }
        }
    }

                结构可以声明构造函数,但他们必须带函数。                

                结构可以实现接口            

                结构的访问修饰符可以是public,internal,但不可以是 protected 默认修饰符为internal.

2.枚举

            由一组称为枚举数列表的2命名常量组成的独特类型  “列举”是值类型,继承ValueType的.

        枚举类型的图标是两个小标签 
            Console.WriteLine(Sex.男.ToString());   //枚举类型转化成字符串
            // typeof  把某种类型转变成type类型
            从字符串到枚举    string类型要转换的值枚举中必须有值
            Sex s = (Sex)(Enum.Parse(typeof(Sex), ""));
            从基础数到枚举 
            Sex ss = (Sex)(-1);
            Console.WriteLine(ss);
//循环遍历
foreach (string str in Enum.GetNames(typeof(Sex))) { Console.WriteLine(str); }
           enum Sex : uint  //无符号整型
           {
                 男 = 0,
                 女 = 1,
                 人妖 = 2
           }
 

[Flags] 位运算  或运算

    

 static void Main(string[] args)
 {
Food food = Food.包子|Food.饺子;         Console.WriteLine(food);

}
enum Food
    {
        包子=1,
        面条=2,
        饺子=4,
        烧饼=8
    }

           


static void Main(string[] args)
 {
    Console.WriteLine(Enum.Format(typeof(Days), 1, "G"));
    Console.WriteLine(Enum.Format(typeof(Days), 1, "X"));
    Console.WriteLine(Enum.Format(typeof(Days), 1, "D"));
    Console.WriteLine(Enum.Format(typeof(Days), 1, "F"));

}
enum Days
    {
        周一,
        周二,
        周三,
        周四,
        周五,
        周六,
        周日 
 
    }
 

 

 

原文地址:https://www.cnblogs.com/ljknlb/p/6419837.html