01、类与结构的区别
由于类是引用类型,因此类对象的变量引用该对象在托管堆上的地址。
由于结构是值类型,因此结构对象的变量具有整个对象的副本。
如果不能理解的同学,看看这运行结果就明白了!
细心的同学应该会发现:
## 红色框(类)第二个对象覆盖了第一个对象(两个类型比较:True)。由于类是引用类型,因此将同一类型的第二个对象分配给第一个对象,则两个变量都引用该地址的对象。也就是 类 所谓的引用类型
## 蓝色框(结构)第二个对象未覆盖第一个对象(两个类型比较:False)。由于结构是值类型,因此结构对象的变量具有整个对象的副本。
实践代码如下:
class Program { static void Main(string[] args) { PersonA personA = new PersonA("lsy", 25); PersonA personA1 = personA; personA1.Name = "lishuyiba"; personA1.Age = 26; Console.WriteLine(personA.Name); Console.WriteLine(personA.Age); Console.WriteLine(personA1.Name); Console.WriteLine(personA1.Age); Console.WriteLine("#######################################"); PersonB personB = new PersonB("lsy", 25); PersonB personB1 = personB; personB1.Name = "lishuyi"; personB1.Age = 27; Console.WriteLine(personB.Name); Console.WriteLine(personB.Age); Console.WriteLine(personB1.Name); Console.WriteLine(personB1.Age); Console.ReadKey(); } } class PersonA { public string Name { get; set; } public int Age { get; set; } public PersonA(string name, int age) { Name = name; Age = age; } } struct PersonB { public string Name { get; set; } public int Age { get; set; } public PersonB(string name, int age) { Name = name; Age = age; } }