自動化的內存管理(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)自動銷毀它,不用俺操心嘍。
新聞熱點
疑難解答