结构体、枚举

来源:互联网 发布:音频编辑软件哪个好 编辑:程序博客网 时间:2024/06/05 09:37

1、结构:程序员定义的数据类型,是值类型,不能派生,关键字struct,内存开辟在栈中
2、结构赋值:把一个结构的值复制给另一个结构,类变量赋值是引用赋值,指向同一内存
3、结构中字段不能初始化
4、结构是密封的,以下修饰符不能用于结构:
protected,internal,abstract,virtual
5、什么情况下使用结构:①内存小,②不可改变,③与逻辑相关的

     enum Week // 枚举    {        Monday,        Tuesday,        Wednesday,        Thursday,        Friday,        Saturday,        Sunday    }    struct Student  // 结构体    {        public int Num;        public string Name;        public Score[] A; // 结构体中的数组    }    struct Score  // 结构体    {        public float X;        public float Y;    }    class Program    {        static void Main(string[] args)        {            Student st2 = InputStudent(); /* 此处在栈内开辟第二块内存空间 */            PrintStudent(st2);   // 结构体作为参数        }        public static void PrintStudent(Student st3)  /* 此处在栈内开辟第三块内存空间 */        {            PrintWeek();            Console.WriteLine("num:{0}\nName:{1}\nscoreX:{2}\nscoreY:{3}", st3.Num, st3.Name, st3.A[0].X, st3.A[1].Y);            Console.WriteLine("按任意键继续");            Console.ReadKey();        }        public static Student InputStudent()        {            Student st1; /* 此处在栈内开辟第一块内存空间 */            st1.Num = 123;            st1.Name = "AA";  // 一般结构体变量赋值            st1.A = new Score[2];  // 初始化结构体数组            st1.A[0].X = 66.6f;            st1.A[0].Y = 88.8f;            st1.A[1].X = 77.7f;            st1.A[1].Y = 99.9f;            return st1;  // 结构体作为返回值        }        public static void PrintWeek()        {            foreach (Week a in Enum.GetValues(typeof(Week))) // 遍历枚举值 GetValues 返回Array类型            {                Console.WriteLine(a);             }            foreach (string name in Enum.GetNames(typeof(Week))) // 遍历枚举值 GetNames 返回 string[] 类型            {                Console.WriteLine(name);            }            /* 直接调用枚举值 可以Week.*** */        }    }
0 0
原创粉丝点击