不安全代码简介
当由 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