码迷,mamicode.com
首页 > 其他好文 > 详细

初识Struct

时间:2015-04-15 23:26:22      阅读:146      评论:0      收藏:0      [点我收藏+]

标签:asp.net   struct和class   

  其实之前学习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的值。

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



初识Struct

标签:asp.net   struct和class   

原文地址:http://blog.csdn.net/wangmei4968/article/details/45047389

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!