您的位置:首页 > 其它

【.net基础】--初识Struct

2015-04-15 21:50 190 查看
  其实之前学习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的值。

    知识对比着学才会更加深刻,应用的时候才可以区分的开。学会利用以前的知识网络,很重要。现在的理解还很表面,以后做项目用到,体会跟感悟会更深的!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: