其实之前学习C#的时候有接触,不过那个时候还小~
记得老师讲操作系统的时候说过这样一句话,软件和硬件最大的区别就是变化。Struct是为了迎合用户日益增长的需求而产生的。开始的时候用变量来存放数据,后来诞生了数组,可以放很多数据类型一致的数据,Struct用来封装小型变量组,包含不同的数据类型。
Struct结构上跟类很相似,不过两者也有不同。Struct是值类型,实例化在栈上,不能被继承,默认是public,适用于经常使用的一些数据组合成的新类型;
Class是对象类型,实例化在堆上,可以被继承,默认private,适合大的复杂的数据.
下面是一个demo,关于Struct和Class的对比。
class TheClass { public int x; } struct TheStruct { public int x; } class TestClass { public static void structtaker(TheStruct s) { s.x = 5; } public static void classtaker(TheClass c) { c.x = 5; } static void Main(string[] args) { TheStruct a = new TheStruct(); TheClass b = new TheClass(); a.x = 1; b.x = 1; structtaker(a); classtaker(b); Console.WriteLine("a.x={0}", a.x); Console.WriteLine("b.x={0}", b.x); } }
效果图:
此结果说明class传递的是一个引用,传递给classtaker的也是b中的引用,函数里面参数引用的和main里面b引用的是同一块内存,都在堆里面,所以函数的改变b会反映到main里面的b。struct传递是值,而非引用,是实参a的copy值,形参a存储在堆里面,main里面的a存储在栈里面,函数改变a的值不会影响到main里面a的值。
知识对比着学才会更加深刻,应用的时候才可以区分的开。学会利用以前的知识网络,很重要。现在的理解还很表面,以后做项目用到,体会跟感悟会更深的!
时间: 2024-10-05 18:48:51