我读《Microsoft .NET框架程序设计(修订版)》------DoItNow的读书笔记2

我读《Microsoft .NET框架程序设计(修订版)》------DoItNow的读书笔记2

 昨天晚上,看了一下 class和struct的比较.简单谈一下自己的体会

在本书中,首先谈到在c++等语言中是有struct的.而Java是一个精简基本类的编程语言,Java没有提供struct类型(字所有去处这种类型,是因为struct完全可以有class来实现).
然后又谈到c# 在很大程度上参考了Java(这个还又说,地球人都知道了:)).但是又把struct从c++中托了回来, 这究竟为什么呢?

原来struct是值类型使用,而class是引用类型使用.建立struct的时候是在栈上分配内存,而class是在托管堆上分配内存. 这样差别就出来了: 当向栈上push的时候分配一块内存,当从栈上pop的时候内存自动释放.  而在clr的托管堆上就不同了,当你new一个class成一个object的时候分配一块内存. 但是当你使用完本对象销毁的时候,内存空间是 不能实时释放的.要等GC不定时间进行收集. 这个内存收集过程又会占有很大一部分资源(关于内存收集方面的内容,本论坛内有其他几篇文章论述).

所有出于性能方面的考虑 我们在写程序的时候能构使用struct的地方,就尽量不要使用class

posted on 2004-06-14 17:16  追忆似水年华  阅读(1124)  评论(2)    收藏  举报

导航