C#固定指针简单介绍

C#固定指针

在语句块前输入关键字fixed,将会告诉CLR块内的对象不能重定位,这样CLR就不会重定位指针指向的数据存储位置。因此在C#固定指针时,使用关键字fixed将能阻止程序运行时无效指针的产生。让我们看看它是如何工作的:

 
 
 
  1. using System;  
  2. class CData  
  3. {  
  4.   public int x;  
  5. }  
  6.  
  7. class CProgram  
  8. {  
  9.   unsafe static void SetVal(int *pInt)  
  10.   {  
  11.     *pInt=1979;  
  12.   }  
  13.     
  14.   public unsafe static void Main()  
  15.   {  
  16.     CData d = new CData();  
  17.       
  18.     Console.WriteLine("Previous value: {0}", d.x);  
  19.       
  20.     fixed(int *p=&d.x)  
  21.     {  
  22.       SetVal(p);  
  23.     }  
  24.       
  25.     Console.WriteLine("New value: {0}", d.x);  
  26.   }  
  27. }  

我们在这段代码里通过一个fixed块,将CData对象数据成员(域)x的地址赋给了一个整数型指针p。当fixed块中的语句被执行时,这个指针p将一直指向原来的那块内存区域,因为CLR已被指示暂时冻结这个变量直到该fixed块执行完毕。一旦fixed块执行完毕,这个对象就又能被CLR 重新定位了。

以上就是C#固定指针编程的介绍,关键是要说明语句块是unsafe并fixed的。希望能因此提高你对C#固定指针使用的知识!

网站名称:C#固定指针简单介绍
网站地址:http://www.shufengxianlan.com/qtweb/news20/322920.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联