unsafe (C# リファレンス)unsafe (C# Reference)

unsafe キーワードは、ポインターに関連するすべての操作に必要な、unsafe コンテキストを示します。The unsafe keyword denotes an unsafe context, which is required for any operation involving pointers. 詳しくは、「アンセーフ コードとポインター」をご覧ください。For more information, see Unsafe Code and Pointers.

unsafe 修飾子は、型またはメンバーの宣言で使用できます。You can use the unsafe modifier in the declaration of a type or a member. そのため、型やメンバーの全体的なテキスト範囲が unsafe コンテキストと見なされます。The entire textual extent of the type or member is therefore considered an unsafe context. たとえば、次に示すのは、unsafe 修飾子を使用して宣言されたメソッドです。For example, the following is a method declared with the unsafe modifier:

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

unsafe コンテキストのスコープはパラメーター リストからメソッドの末尾までなので、ポインターはパラメーター リストでも使用できます。The scope of the unsafe context extends from the parameter list to the end of the method, so pointers can also be used in the parameter list:

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

また、unsafe ブロックを使用して、そのブロック内で unsafe コードを使用できるようにすることもできます。You can also use an unsafe block to enable the use of an unsafe code inside this block. 次に例を示します。For example:

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

unsafe コードをコンパイルするには、 /unsafe コンパイラ オプションを指定する必要があります。To compile unsafe code, you must specify the /unsafe compiler option. unsafe コードは、共通言語ランタイムでは検証できません。Unsafe code is not verifiable by the common language runtime.

Example

// 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# language specification

詳細については、「C# 言語の仕様」のアンセーフ コードに関するセクションを参照してください。For more information, see Unsafe code in the C# Language Specification. 言語仕様は、C# の構文と使用法に関する信頼性のある情報源です。The language specification is the definitive source for C# syntax and usage.

関連項目See also