為了維護型別安全,C# 預設不支援指標運算。但可透過 unsafe 關鍵字定義允許使用指標的「不安全內容」。
注意:在 CLR 中,不安全代碼指「無法驗證的代碼」。C# 的不安全代碼不一定危險,只是其安全性無法由 CLR 驗證。
宣告一個接受 int* 的不安全方法,將指標指向的值加倍:
unsafe static void Add(int* p)
{
*p += *p;
}
在 Main 中呼叫(同樣需標記 unsafe):
unsafe static void Main()
{
int i = 5;
Add(&i);
Console.Write(i); // 輸出 10
Console.Read();
}
編譯包含不安全代碼的專案,必須指定 /unsafe 選項:
csc /unsafe test.cs
或在 Visual Studio 專案屬性「建置」頁面勾選「允許不安全代碼」。