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;
}
}

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