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