Show/Hide Toolbars

XSharp

用途

BEGIN FIXEDEND FIXED 关键字可防止垃圾回收器重新定位可移动变量。BEGIN FIXED 语句只允许在不安全上下文中使用。

 

fixed(固定)语句会设置一个指向托管变量的指针,并在语句执行期间 “固定 ”该变量。指向可移动托管变量的指针只有在固定(fixed)上下文中才有用。如果没有固定(fixed)上下文,垃圾回收可能会对变量进行不可预测的重定位。X# 编译器只允许在 fixed(固定)语句中为托管变量分配指针。

你可以使用数组、字符串、固定大小的缓冲区或变量地址来初始化指针。

语法

BEGIN FIXED declaration
  statements
END FIXED

参数

declaration变量声明和赋值
statements 代码包括一条或多条可能包含不安全代码的语句。

 

示例

 

UNSAFE FUNCTION Start AS VOID
  VAR s := "SDRS"
  BEGIN FIXED LOCAL p := s AS CHAR PTR
      VAR i := 0
      WHILE p[i] != 0
           p[i++]++
      END
  END FIXED
   Console.WriteLine(s)
   Console.Read()
  RETURN