学点C#6 安全代码

    技术2022-05-19  20

    unsafe

     

    进行低级 API 调用、使用指针算法或执行其他一些棘手操作的 C# 代码必须放在以 unsafe 关键字标记的块内。下面的任何代码均可标记为 unsafe:

    整个方法。

    大括号中的代码块。

    单个语句。

     

    unsafe static void PointyMethod() { int i=10; int *p = &i; System.Console.WriteLine("*p = " + *p); System.Console.WriteLine("Address of p = {0:X2}/n", (int)p); } fixed 在安全代码中,垃圾回收器在对象的生存期内可以自由地移动对象,以组织和压缩可用资源。但是,如果代码使用了指针,则此行为可能很容易造成意外的结果,因此您可以使用 fixed 语句来指示垃圾回收器不要移动某些对象。 class TestFixed { public static void PointyMethod(char[] array) { unsafe { fixed (char *p = array) { for (int i=0; i<array.Length; i++) { System.Console.Write(*(p+i)); } } } }

     


    最新回复(0)