using System;namespace _133_类和结构的区别{    class Program    {        static void Main(string[] args)        {            //类型:            //结构:值类型            //类:应用类型            //声明的语法:class struct            //在类中,构造函数里,既可以给字段赋值,也可以给属性赋值,构造函数是可以重载的            //但是在结构的构造函数里,必须只能给字段赋值,            //在结构的构造函数中,我们需要给全部的字段赋值,而不能去选择的给字段赋值            //调用:            PersonClass pc = new PersonClass();            //结构是否可以new?            //在栈中开辟空间  结构new->调用结构的构造函数            PersonStruct ps = new PersonStruct();            ps.M2();            PersonStruct.M1();            Console.ReadKey();            //结构和类的构造函数:            //相同点:不管是结构还是类,本身都会有一个无参数的构造函数            //不同点:当你在类中写了一个新的构造函数时,那个默认的无参数的构造函数就不存在了            //但是,在结构当中,如果你写了一个新的构造函数,但是那个默认构造函数依然在            //            //如果我们只是单纯的存储数据的话,建议使用struct            //如果我们想要使用面对对象的思维开放程序,建议使用class        }        public class PersonClass        {            //字段、属性、方法、构造函数        }        public struct PersonStruct        {            //字段、属性            private string _name;            private int _age;            private char _gender;            public string Name { get => _name; set => _name = value; }            public int Age { get => _age; set => _age = value; }            public char Gender { get => _gender; set => _gender = value; }            public static void M1()            {                Console.WriteLine("我是结构中静态方法");            }            public void M2()            {                Console.WriteLine("我是结构中非静态方法");            }            public PersonStruct(string name,int age,char gender)            {                //结构的构造函数里,必须只能给字段赋值                //this.Name = name;                //this.Age = age;                //this.Gender = gender;                this._name = name;                this._age = age;                this._gender = gender;            }            //在结构的构造函数中,我们需要给全部的字段赋值,而不能去选择的给字段赋值            //public PersonStruct(string name)            //{            //    this._name = name;            //}        }    }}