fixed语句

fixed语句

  fixed 语句禁止垃圾回收器重定位可移动的变量。fixed 语句只能出现在不安全的上下文中。Fixed 还可用于创建固定大小的缓冲区

  fixed 语句设置指向托管变量的指针,并在执行该语句期间“固定”此变量。如果没有 fixed 语句,则指向可移动托管变量的指针的作用很小,因为垃圾回收可能不可预知地重定位变量。C# 编译器只允许在 fixed 语句中分配指向托管变量的指针。

  

  要初始化不同类型的指针,只需嵌套 fixed 语句:

  

  执行完语句中的代码后,任何固定变量都被解除固定并受垃圾回收的制约。因此,不要指向 fixed 语句之外的那些变量。

参考:https://msdn.microsoft.com/zh-cn/library/f58wzh21(v=vs.90).aspx

时间: 2024-10-19 05:08:28

fixed语句的相关文章

C#基础关键字篇-fixed语句

1.该语句用于“固定”可移动变量,从而使该变量的地址在语句的持续时间内保持不变.只有执行完fixed块后,指针所指向的对象才可以移动. 1 unsafe static void TestMethod() 2 { 3 4 // Assume that the following class exists. 5 //class Point 6 //{ 7 // public int x; 8 // public int y; 9 //} 10 11 // Variable pt is a manag

C# 指针学习笔记之fixed 语句

大学的时候学过C++.C,最近工作也不是很忙,就想起看看C#中的指针,看看.回忆一下啊,指针的用法,以下学习笔记摘自msdn:fixed 语句 fixed 语句禁止垃圾回收器重定位可移动的变量.fixed 语句只能出现在不安全的上下文中.Fixed 还可用于创建固定大小的缓冲区. 备注 fixed 语句设置指向托管变量的指针并在 statement 执行期间"钉住"该变量.如果没有 fixed 语句,则指向可移动托管变量的指针的作用很小,因为垃圾回收可能不可预知地重定位变量.C# 编译

C# fixed语句固定变量详解

相信很多人在这样或那样的项目中,或者无意间看到了fixed语句块,看到之后你肯定会疑问: 1,这个fixed关键字是做什么用的? 2,什么情况下需要该关键字? 3,这个关键字该怎么用? 我相信解决了上面四个问题之后,你对这个fixed语句就理解和掌握到位了,我也在网上大致浏览了下,网上关于该关键字的详细说明太少太少了,基本都是摘抄MSDN官方文档,毫无自身理解与发散出来的东西,当然完全依据MSDN的只言片文也能理解不过相当费劲,在这里我结合自己的理解给大家说明下该关键字的用法,希望各位看过之后能

C#使用Fixed创建固定大小的缓冲区

在 C# 中,可以使用 fixed 语句在数据结构中创建带有固定大小数组的缓冲区. 使用现有代码(如使用其他语言.预先存在的 DLL 或 COM 项目编写的代码)时,这种方法非常有用. 固定数组可采用允许普通结构成员使用的任何特性或修饰符. 唯一的限制是,数组类型必须是 bool.byte. char. short.int.long.sbyte.ushort.uint.ulong.float 或 double. private fixed char name[30]; 在早期版本的 C# 中,声

C#不安全代码和Fixed

fixed 语句禁止垃圾回收器重定位可移动的变量. fixed 语句只在不安全的上下文中是允许的. Fixed 还可用于创建固定大小缓冲区. fixed 语句设置指向托管变量的指针,并在执行该语句期间“固定”此变量. 如果没有 fixed 语句,则指向可移动托管变量的指针的作用很小,因为垃圾回收可能不可预知地重定位变量. C# 编译器只允许在 fixed 语句中分配指向托管变量的指针. unsafe static void TestMethod() { // Assume that the fo

c# 语句关键字

1. yield 它表明一个方法,操作符或者get选择器里会出现迭代. 用yield return 同时返回每一个元素,  返回类型必须是IEnumerable, IEnumerable<T>, IEnumerator, or IEnumerator<T>. Example: public static IEnumerable<int> Power(int number, int exponent) { int result = 1; for(int i = 0; i&

c# 指针unsafe/fixed -- 【一】

指针C#unsafefixed 目录(?)[-] 概述 unsafe fixed 1.1 概述 unsafe关键字表示不安全上下文,该上下文是任何涉及指针的操作所必需的.可以在属性.方法.类的声明中使用unsafe修饰符,此时类型或成员的整个正文范围均被视为不安全上下文. fixed语句用于禁止垃圾回收器重定位可移动的变量,Fixed还可用于创建固定大小的缓冲区,fixed 语句只能出现在不安全的上下文中. 但在C#中使用指针时只能操作struct,不能操作class,不能在泛型类型代码中使用未

C#中的Unsafe和Fixed

托管代码 (managed code):由公共语言运行库环境(而不是直接由操作系统)执行的代码.托管代码应用程序可以获得公共语言运行库服务,例如自动垃圾回收.运行库类型检查和安全支持等.这些服务帮助提供独立于平台和语言的.统一的托管代码应用程序行为. 非托管代码(Unmanaged Code):在公共语言运行库环境的外部,由操作系统直接执行的代码.非托管代码必须提供自己的垃圾回收.类型检查.安全支持等服务:它与托管代码不同,后者从公共语言运行库中获得这些服务. Unsafe的代码介于这两者之间,

C#的语句

什么是语句?语句可以是以分号结尾的单行代码,或者是语句块中的一系列单行语句.语句块括在括号 {} 中,并且可以包含嵌套块. 1,语句的类型 (1)声明语句 声明语句主要是引入新的变量和常量.变量的声明可以选择为变量赋值.常量的声明必须对常量进行赋值.如:int i:const int k=10; (2)表达式语句 用于计算的的表达式语句必须存储在变量中.如 int result=5*3; (3)选择语句 选择语句是根据一个或多个指定条件,执行不同的代码段.主要有 if,if  else,swit