十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
C#固定指针

在语句块前输入关键字fixed,将会告诉CLR块内的对象不能重定位,这样CLR就不会重定位指针指向的数据存储位置。因此在C#固定指针时,使用关键字fixed将能阻止程序运行时无效指针的产生。让我们看看它是如何工作的:
- using System;
 - class CData
 - {
 - public int x;
 - }
 - class CProgram
 - {
 - unsafe static void SetVal(int *pInt)
 - {
 - *pInt=1979;
 - }
 - public unsafe static void Main()
 - {
 - CData d = new CData();
 - Console.WriteLine("Previous value: {0}", d.x);
 - fixed(int *p=&d.x)
 - {
 - SetVal(p);
 - }
 - Console.WriteLine("New value: {0}", d.x);
 - }
 - }
 
我们在这段代码里通过一个fixed块,将CData对象数据成员(域)x的地址赋给了一个整数型指针p。当fixed块中的语句被执行时,这个指针p将一直指向原来的那块内存区域,因为CLR已被指示暂时冻结这个变量直到该fixed块执行完毕。一旦fixed块执行完毕,这个对象就又能被CLR 重新定位了。
以上就是C#固定指针编程的介绍,关键是要说明语句块是unsafe并fixed的。希望能因此提高你对C#固定指针使用的知识!