企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# unsafe(C# 参考) **unsafe** 关键字表示不安全上下文,该上下文是任何涉及指针的操作所必需的。有关更多信息,请参见 [不安全代码和指针(C# 编程指南)](https://msdn.microsoft.com/zh-cn/library/t2yzs44b.aspx)。 可以在类型或成员的声明中使用 **unsafe** 修饰符。因此,类型或成员的整个正文范围均被视为不安全上下文。例如,以下是用 **unsafe** 修饰符声明的方法: ``` unsafe static void FastCopy(byte[] src, byte[] dst, int count) { // Unsafe context: can use pointers here. } ``` 不安全上下文的范围从参数列表扩展到方法的结尾,因此指针在以下参数列表中也可以使用: ``` unsafe static void FastCopy ( byte* ps, byte* pd, int count ) {...} ``` 还可以使用不安全块从而能够使用该块内的不安全代码。例如: ``` unsafe { // Unsafe context: can use pointers here. } ``` 若要编译不安全代码,必须指定 [/unsafe](https://msdn.microsoft.com/zh-cn/library/ct597kb0.aspx) 编译器选项。无法通过公共语言运行时验证不安全代码。 ``` // compile with: /unsafe class UnsafeTest { // Unsafe method: takes pointer to int: unsafe static void SquarePtrParam(int* p) { *p *= *p; } unsafe static void Main() { int i = 5; // Unsafe method: uses address-of operator (&): SquarePtrParam(&i); Console.WriteLine(i); } } // Output: 25 ``` ## C# 语言规范 有关详细信息,请参阅 [C# 语言规范](https://msdn.microsoft.com/zh-cn/library/ms228593.aspx)。该语言规范是 C# 语法和用法的权威资料。 ## 请参阅 [C# 参考](https://msdn.microsoft.com/zh-cn/library/618ayhy6.aspx) [C# 编程指南](https://msdn.microsoft.com/zh-cn/library/67ef8sbd.aspx) [C# 关键字](https://msdn.microsoft.com/zh-cn/library/x53a06bb.aspx) [fixed 语句(C# 参考)](https://msdn.microsoft.com/zh-cn/library/f58wzh21.aspx) [不安全代码和指针(C# 编程指南)](https://msdn.microsoft.com/zh-cn/library/t2yzs44b.aspx) [固定大小的缓冲区(C# 编程指南)](https://msdn.microsoft.com/zh-cn/library/zycewsya.aspx)