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; //} } }}