类和结构

结构struct:是值类型,可以声明字段但是声明字段的时候是不能赋值的,但是类就可以在声明的时候赋值,其实原因是因为类会到构造函数中进行赋值。

类和结构都会自动的生成一个无参的构造函数,类中如果定义了有参的构造函数就不会再生成无参构造函数了,而结构会。而且不能为结构添加一个无参的构造函数,并且在结构体的构造函数中必须为所有字段赋值。创建结构体可以不使用new关键字,结构体不能从另外一个结构或者类继承但是可以实现结构,其实所有的结构都是从valuetype类继承,valuetype又从object中继承

类和结构的使用时机:

结构存储在栈中,类存储在堆中,结构访问速度比类快

结构适合轻量级对象比如点 矩形 颜色

类适合重量级对象

//class ClassAndStruct
//{
//}
//class Point
//{
// public int x, y;
// public Point(int x, int y)
// {
// this.x = x;
// this.y = y;
// }
//}
//class Test

//{
// static void Main(string[] args)
// {
// Point[] points = new Point[1000000];
// for (int i = 0; i < 1000000; i++)
// { 
// points[i] = new Point(i, i * i);
// }
// }
//}

在性能分析工具中,1百万的数组大小,类类型的point数组需要1百万零1个分立空间i(1个给数组,另外1百万个给数字里的元素),而结构类型只需要1个分立空间,类类型需要700多毫秒而结构类型只需要20多毫秒

 

posted @ 2018-09-06 16:18  小矮子的小胖子  阅读(161)  评论(0编辑  收藏  举报