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