快讯

初探c#(二)自动化的内存管理

2004-02-14 09:34  出处:PConline  作者:依栏望海  责任编辑:pjl 

1。2 自动化的内存管理(Automatic memory management)   手动管理内存需要程序员自行分配和释放内存块。这要求程序员有清晰的头脑和对整个运行过程有十分的把握(好难!)。而c#把程序员从这难以承担的任务中解放出来。在多数的情况下,这种自动内存管理提高代码的质量和程序员的生产力。并且,不会对程序的意图和执行产生幅面的影响(?俺可不相信m$的鬼话)。不过,估计比java的回收站好一点吧。因为c#出道迟嘛(尽胡扯)。   好了,来看看例子。*/ using System; public class Stack { private Node first = null; public bool Empty { get { return (first == null); } } public object Pop() { if (first == null) throw new Exception("Can't Pop from an empty Stack."); else { object temp = first.Value; first = first.Next; return temp; } } public void Push(object o) { first = new Node(o, first); } class Node { public Node Next; public object Value; public Node(object value): this(value, null) {} public Node(object value, Node next) { Next = next; Value = value; } } } class Test { static void Main() { Stack s = new Stack(); for (int i = 0; i < 10; i++) s.Push(i); while (!s.Empty) Console.WriteLine(s.Pop()); } } /*   stack类实现了一系列Node的实例。大家可以看看stack类的Push方法。Node的实例就是在Push方法中创建的。   就是“first = new Node(o, first);”。请记住这个“new”噢。它就是用来创建类实例的。相关的语法太多,遛到后面用一节详细讲。这里只是要了解自动内存管理(Automatic memory management)好处?!“new”是负责初始化类实例。而在c/c++中释放这些实例要用另一个关键字“delete”。但是在什么时候用delete呢,这通常是很费神的活,老手也会阴沟里翻船。何况是俺呢!但在c#中有不用了。例子里就没有用“delete”。   当Node的实例不需要时,垃圾收集器(garbage collector)自动销毁它,不用俺操心喽。这点到和java挺像的(可能是抄的)。
键盘也能翻页,试试“← →”键
IT热词搜索 来源:360新闻
相关文章

相关软件:

腾讯QQ2012
大小:52.93 MB 授权:免费
腾讯QQ2012
立即下载
腾讯QQ2013
大小:49.32 MB 授权:免费
腾讯QQ2013
立即下载