unsafe(C# 참조)unsafe (C# Reference)

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. 따라서 형식 또는 멤버의 전체 텍스트 범위가 안전하지 않은 컨텍스트로 간주됩니다.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.
}

안전하지 않은 컨텍스트의 범위는 매개 변수 목록에서 메서드의 끝까지 확장되므로 매개 변수 목록에 포인터를 사용할 수도 있습니다.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 ) {...}

안전하지 않은 블록을 통해 이 블록 내에서 안전하지 않은 코드를 사용할 수도 있습니다.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 컴파일러 옵션을 지정해야 합니다.To compile unsafe code, you must specify the -unsafe compiler option. 안전하지 않은 코드는 공용 언어 런타임에서 확인할 수 없습니다.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