fixed 關鍵字
在安全代碼中,垃圾回收器在其生命周期內可以相當自由地移動一個對象,它的任務是組織和壓縮可用資源。然而,如果我們的代碼使用指針,這種行為就可能很容易導致意外的結果,因此,我們可以使用 fixed 關鍵字來指示垃圾回收器不要移動特定的對象。
下面的代碼展示了如何使用 fixed 關鍵字來確保在 PointyMethod() 方法中的代碼塊執行期間系統不會移動數組。注意,fixed 僅僅使用在不安全代碼中:
public class FixedClass
{
public static void PointyMethod(char[] array)
{
unsafe
{
fixed (char *p = array)
{
for (int i=0; i<array.Length; i++)
{
Console.Write(*(p+i));
}
}
}
}
static void Main ()
{
char[] array = { 'H', 'e', 'l', 'l', 'o' };
PointyMethod(array);
}
}
小結
雖然 Microsoft 和其他廠商都已經為 .NET 平台引入了許多語言,但是 C# 是非常類似 Java 的一種語言,並且它非常適合希望從 J2EE 遷移到 .Net 平台的開發人員。
本文比較和對比了這兩種語言。在許多方面,C# 具有 C++ 的強大功能、Java 的簡潔優美,以及 Visual Basic 開發的簡易性,我希望本文已經說明了這一點。