自动化的内存管理(Automatic memory management)
手动管理内存需要程序员自行分配和释放内存块。这要求程序员有清晰的头脑和对整个运行过程有十分的把握。而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("空栈,不能执行弹栈操作。");
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就是用来创建类实例的。是负责初始化类实例。而在c/c++中释放这些实例要用另一个关键字“delete”。但是在什么时候用delete呢,这通常是很费神的活,老手也会阴沟里翻船。但在c#中没有用“delete”。
当Node的实例不需要时,垃圾收集器(garbage collector)自动销毁它,不用俺操心喽。
新闻热点
疑难解答