Repository navigation
ZH TW CSharp Memory Unsafe
Codex edited this page Oct 11, 2026
·
2 revisions
Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
Span<T> 和 ReadOnlySpan<T> 提供記憶體視圖,而無需複製。 ref-返回和ref-局部變數可讓您使用現有的儲存位置。編譯器控制引用的生命週期。 ref struct不能用作常規堆字段; await 和 yield 周圍的限制取決於允許的壽命。
請將此範例另存為 Example.cs,並與本頁其他範例分開執行。
Example.cs:
// PROJECT-EXAMPLE
System.Span<int> values = stackalloc int[] { 2, 3 };
System.Console.WriteLine(values[0] + values[1]);結果:
5
static int SumSmall()
{
Span<int> values = stackalloc int[] { 1, 2, 3 };
int total = 0;
foreach (int value in values) total += value;
return total;
}
UO.Print(SumSmall().ToString());如果編譯包含AllowUnsafeBlocks,則unsafe啟用指標和記憶體函數。 fixed 儲存移動物件到所需位置的位址。這些是標準的C#功能,而不是繞過遊戲世界所有權規則的方法。
// PROJECT-EXAMPLE
namespace UserTools;
public static class PointerExample
{
public static unsafe int ReadLocal()
{
int value = 42;
int* address = &value;
return *address;
}
}ClassicUO — Bad Newbie & C# Scripts IDE