為了保持類型安全,默認情況下,C#不支持指針運算。不過,通過使用unsafe關鍵字,可以定義允許使用指針的不安全上下文。
注意:在公共語言運行庫(CLR)中,不安全代碼是指無法驗證的代碼。C#中的不安全代碼不一定是危險的,只是其安全性無法由CLR進行驗證。
下面代碼是一段不安全代碼,方法中聲明了一個int類型的指針,並將該指針自身相加,代碼如下:
unsafe static void add(int* p)
{
*p += *p;
}
在Main函數中使用已經定義的不安全代碼方法,並將結果輸出,代碼如下:
unsafe static void Main()
{
int i = 5;
add(&i);
Console.Write(i);
Console.Read();
}
在編譯不安全代碼時,需要使用“/unsafe”,具體格式如下:
csc /unsafe test.cs
test.cs為包含不安全代碼的文件。