不安全程式碼簡介
當由 unsafe
修飾符標記時,C#允許在程式碼塊的函式中使用指標變數。不安全程式碼或非託管程式碼是使用指標變數的程式碼塊。
指標是一個變數,其值是另一個變數的地址,即儲存器位置的直接地址。與任何變數或常量類似,你必須先宣告指標,然後才能使用它來儲存任何變數地址。
指標宣告的一般形式是:
type *var-name;
以下是有效的指標宣告:
int *ip; /* pointer to an integer */
double *dp; /* pointer to a double */
float *fp; /* pointer to a float */
char *ch /* pointer to a character */
以下示例說明了使用 unsafe 修飾符在 C#中使用指標:
using System;
namespace UnsafeCodeApplication
{
class Program
{
static unsafe void Main(string[] args)
{
int var = 20;
int* p = &var;
Console.WriteLine("Data is: {0} ", var);
Console.WriteLine("Address is: {0}", (int)p);
Console.ReadKey();
}
}
}
當上面的程式碼編譯並執行時,它會產生以下結果:
Data is: 20
Address is: 99215364
你可以將程式碼的一部分宣告為不安全,而不是將整個方法宣告為不安全:
// safe code
unsafe
{
// you can use pointers here
}
// safe code