fixed语句用法

关于fixed的用法,参考https://docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/keywords/fixed-statement
fixed语句中的变量是只读变量,如果需要修改这个变量的值,请重新声明一个指针变量,再修改这个变量所对应的值,如果要在fixed语句中分配内存,它是不会受GC影响的,要使用stackalloc表达式(关于stackalloc表达式参考https://docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/operators/stackalloc
stackalloc表达式在堆栈上分配内存块。不能显式释放使用stackalloc分配的内存,堆栈中分配的内存块不受GC的影响,也不必通过fixed语句固定,stackalloc可以用于system.Span<T> ReadOnlySpan<T>或指针类型,对于指针类型,只能在unsafe上下文中使用,Span不需要,而且官方推荐用Span而不是指针类型。
unsafe
{
int length=3;
int* numbers = stackallock int[length];
for(var i=0;i<length;i++)
{
numbers[i]=i;
}
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章