次の方法で共有


unsafe (C# リファレンス)

更新 : 2007 年 11 月

unsafe キーワードは、unsafe コンテキストを示し、ポインタが関係するすべての操作に必要です。詳細については、「unsafe コードとポインタ (C# プログラミング ガイド)」を参照してください。

unsafe 修飾子は、型またはメンバの宣言で使用できます。このため、型またはメンバの宣言の範囲全体が、unsafe コンテキストと見なされます。unsafe 修飾子を使用して宣言されたメソッドの例を次に示します。

unsafe static void FastCopy(byte[] src, byte[] dst, int count)
{
    // Unsafe context: can use pointers here.
}

unsafe コンテキストのスコープは、パラメータ リストからメソッドの末尾にまで拡張されます。このため、パラメータ リストではポインタも使用できます。

unsafe static void FastCopy ( byte* ps, byte* pd, int count ) {...}

また、unsafe ブロックを使用すると、アンセーフ コードをそのブロック内で使用できるようになります。次に例を示します。

unsafe
{
    // Unsafe context: can use pointers here.
}

アンセーフ コードをコンパイルするには、/unsafe コンパイラ オプションを指定する必要があります。アンセーフ コードは、共通言語ランタイムでは検証できません。

使用例

// compile with: /unsafe

class UnsafeTest
{
   // Unsafe method: takes pointer to int:
   unsafe static void SquarePtrParam(int* p)
   {
      *p *= *p;
   }

   unsafe static void Main()
   {
      int i = 5;
      // Unsafe method: uses address-of operator (&):
      SquarePtrParam(&i);
      Console.WriteLine(i);
   }
}
// Output: 25

C# 言語仕様

詳細については、「C# 言語仕様」の次のセクションを参照してください。

  • 18 アンセーフ コード

参照

概念

C# プログラミング ガイド

参照

C# のキーワード

fixed ステートメント (C# リファレンス)

unsafe コードとポインタ (C# プログラミング ガイド)

固定サイズ バッファ (C# プログラミング ガイド)

その他の技術情報

C# リファレンス