fixed
(一)fixed语句禁止垃圾回收器重定位可移动的变量。fixed语句只能出现在不安全的上下文中。Fixed还可用于创建固定大小的缓冲区。
fixed语句设置指向托管变量的指针并在statement执行期间“钉住”该变量。如果没有fixed语句,则指向可移动托管变量的指针的作用很小,因为垃圾回收可能不可预知地重定位变量。C# 编译器只允许在fixed语句中分配指向托管变量的指针。
示例
// statements_fixed.cs// compile with: /unsafeusing System;class Point{ public int x, y; }class FixedTest { // Unsafe method: takes a pointer to an int. unsafe static void SquarePtrParam (int* p) { *p *= *p; } unsafe static void Main() { Point pt = new Point(); pt.x = 5; pt.y = 6; // Pin pt in place: fixed (int* p = &pt.x) { SquarePtrParam (p); } // pt now unpinned Console.WriteLine ("{0} {1}", pt.x, pt.y); }}
(二)Fixed函数:按指定的位数进行四舍五入得到文本型的数值,如果其第二个参数是正数是在小数点的右侧进行四舍五入,反之在小数点的左侧,第三个参数决定其是否用千位分隔符