unsafe 关键字表示不安全上下文,该上下文是任何涉及指针的操作所必需的。
备注:C# 默认编译器是非 unsafe 的,使用 unsafe 关键字会发生编译错误(警告 CS0227:不安全代码只会在使用 /unsafe 编译的情况下出现)。不能通过公共语言运行时验证 unsafe 代码。若要使用 unsafe 关键字,依如下步骤完成:
- 选择菜单“项目”中的““项目名”和属性”一项;
- 左侧栏找到“生成”→“常规”;
- 选中右侧“不安全代码”一栏中的“允许使用“unsafe”关键字编译的代码。”
可在类型或成员的声明中使用 unsafe 修饰符。因此,类型或成员的整个正文范围均被视为不安全上下文。以下面使用 unsafe 修饰符声明的方法为例:
unsafe static void FF快速复制 ( byte [ ] 源 , byte [ ] 目标 , int 数量 )
{
// unsafe 上下文:此处可以使用指针
}
不安全上下文的范围从参数列表扩展到方法的结尾,因此也可在以下参数列表中使用指针:
unsafe static void FF快速复制 ( byte* 源 , byte* 目标 , int 数量 )
{
// unsafe 上下文:此处可以使用指针
}
还可以使用不安全块从而能够使用该块内的不安全代码。 例如:
unsafe
{
// unsafe 上下文:此处可以使用指针
}
不安全的类
unsafe static void Main(string[] args)
{
int z = 5;
LeiUnsafe . FFUnsafe ( &z ) ;
Console . WriteLine ( z );
}
public class LeiUnsafe
{
// unsafe 方法:设置指针到整数
unsafe public static void FFUnsafe ( int* P )
{
*P *= *P;
}
}
上例输出:25。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。