自動(dòng)化的內(nèi)存管理(Automatic memory management)
手動(dòng)管理內(nèi)存需要程序員自行分配和釋放內(nèi)存塊。這要求程序員有清晰的頭腦和對(duì)整個(gè)運(yùn)行過程有十分的把握。而c#把程序員從這難以承擔(dān)的任務(wù)中解放出來。在多數(shù)的情況下,這種自動(dòng)內(nèi)存管理提高代碼的質(zhì)量和程序員的生產(chǎn)力。并且,不會(huì)對(duì)程序的意圖和執(zhí)行產(chǎn)生負(fù)面的影響。
下面是一個(gè)例子
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("空棧,不能執(zhí)行彈棧操作。");
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類實(shí)現(xiàn)了一系列Node的實(shí)例。大家可以看看stack類的Push方法。Node的實(shí)例就是在Push方法中創(chuàng)建的。
就是“first = new Node(o, first);”。new就是用來創(chuàng)建類實(shí)例的。是負(fù)責(zé)初始化類實(shí)例。而在c/c++中釋放這些實(shí)例要用另一個(gè)關(guān)鍵字“delete”。但是在什么時(shí)候用delete呢,這通常是很費(fèi)神的活,老手也會(huì)陰溝里翻船。但在c#中沒有用“delete”。
當(dāng)Node的實(shí)例不需要時(shí),垃圾收集器(garbage collector)自動(dòng)銷毀它,不用俺操心嘍。
新聞熱點(diǎn)
疑難解答
圖片精選