初识Struct

  其实之前学习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);
		        }
		    }
效果图:


初识Struct_第1张图片



    此结果说明class传递的是一个引用,传递给classtaker的也是b中的引用,函数里面参数引用的和main里面b引用的是同一块内存,都在堆里面,所以函数的改变b会反映到main里面的b。struct传递是值,而非引用,是实参a的copy值,形参a存储在堆里面,main里面的a存储在栈里面,函数改变a的值不会影响到main里面a的值。

    知识对比着学才会更加深刻,应用的时候才可以区分的开。学会利用以前的知识网络,很重要。现在的理解还很表面,以后做项目用到,体会跟感悟会更深的!



你可能感兴趣的:(asp.net,struct和class)