C#固定指针简单介绍

开发 后端
这里简单介绍C#固定指针,在C#固定指针时,使用关键字fixed将能阻止程序运行时无效指针的产生。让我们看看它是如何工作的。

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#固定指针使用的知识!

【编辑推荐】

  1. C#特有线程功能
  2. 浅谈C#对象和集合
  3. 浅析C# FTP WebRequest对象
  4. C#分部方法的应用场景
  5. 概述C#线程功能
责任编辑:佚名 来源: 博客园
相关推荐

2009-08-03 17:12:40

C#指针操作

2009-08-21 15:16:23

C#使用指针

2009-08-03 17:51:43

C#引用类型

2009-09-01 16:19:57

C# new()约束

2009-08-25 13:38:35

C# Timer组件

2009-08-06 18:15:13

C# SQL Serv

2009-08-20 16:25:59

C# 匿名方法

2009-08-07 17:12:07

C# DLL函数

2009-08-13 17:36:54

编译C#代码

2009-09-03 09:40:57

C#创建表单

2009-08-14 16:46:44

C#元数据

2009-08-10 16:19:37

C#冒泡排序

2009-08-21 17:55:52

C#复合控件

2009-08-27 10:19:22

C#匿名类型

2009-08-07 17:41:40

C#预处理

2009-08-14 17:27:56

C#方法参数

2009-08-06 14:53:41

C# User类

2009-08-25 14:42:41

由C++转向C#

2009-08-27 13:37:11

C#类和结构

2009-08-26 13:24:54

C#字符串
点赞
收藏

51CTO技术栈公众号