Repository navigation
JA CSharp Memory Unsafe
Codex edited this page Oct 11, 2026
·
2 revisions
Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
Span<T> と ReadOnlySpan<T> は、必ずしもコピーすることなくメモリ全体を表示します。 ref-return 変数と ref-local 変数を使用すると、既存の保存場所を操作できます。コンパイラは参照の有効期間を制御します。 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;
}
}公式ドキュメント: メモリ: ref、Span、ref struct および unsafe - Microsoft 学習。
ClassicUO — Bad Newbie & C# Scripts IDE