1. using System;
    2. namespace _133_类和结构的区别
    3. {
    4. class Program
    5. {
    6. static void Main(string[] args)
    7. {
    8. //类型:
    9. //结构:值类型
    10. //类:应用类型
    11. //声明的语法:class struct
    12. //在类中,构造函数里,既可以给字段赋值,也可以给属性赋值,构造函数是可以重载的
    13. //但是在结构的构造函数里,必须只能给字段赋值,
    14. //在结构的构造函数中,我们需要给全部的字段赋值,而不能去选择的给字段赋值
    15. //调用:
    16. PersonClass pc = new PersonClass();
    17. //结构是否可以new?
    18. //在栈中开辟空间 结构new->调用结构的构造函数
    19. PersonStruct ps = new PersonStruct();
    20. ps.M2();
    21. PersonStruct.M1();
    22. Console.ReadKey();
    23. //结构和类的构造函数:
    24. //相同点:不管是结构还是类,本身都会有一个无参数的构造函数
    25. //不同点:当你在类中写了一个新的构造函数时,那个默认的无参数的构造函数就不存在了
    26. //但是,在结构当中,如果你写了一个新的构造函数,但是那个默认构造函数依然在
    27. //
    28. //如果我们只是单纯的存储数据的话,建议使用struct
    29. //如果我们想要使用面对对象的思维开放程序,建议使用class
    30. }
    31. public class PersonClass
    32. {
    33. //字段、属性、方法、构造函数
    34. }
    35. public struct PersonStruct
    36. {
    37. //字段、属性
    38. private string _name;
    39. private int _age;
    40. private char _gender;
    41. public string Name { get => _name; set => _name = value; }
    42. public int Age { get => _age; set => _age = value; }
    43. public char Gender { get => _gender; set => _gender = value; }
    44. public static void M1()
    45. {
    46. Console.WriteLine("我是结构中静态方法");
    47. }
    48. public void M2()
    49. {
    50. Console.WriteLine("我是结构中非静态方法");
    51. }
    52. public PersonStruct(string name,int age,char gender)
    53. {
    54. //结构的构造函数里,必须只能给字段赋值
    55. //this.Name = name;
    56. //this.Age = age;
    57. //this.Gender = gender;
    58. this._name = name;
    59. this._age = age;
    60. this._gender = gender;
    61. }
    62. //在结构的构造函数中,我们需要给全部的字段赋值,而不能去选择的给字段赋值
    63. //public PersonStruct(string name)
    64. //{
    65. // this._name = name;
    66. //}
    67. }
    68. }
    69. }