unsafe 컨텍스트
- 메서드, 형, 코드 블록은 unsafe로 정의할 수 있습니다.
- unsafe 코드로 어플리케이션 성능을 끌어올릴 수 있다.
- unsafe 코드는 포인터를 사용해야 하는 네이티브 함수를 호출할 때 필요합니다.
- unsafe 코드를 사용하면 보안성과 안정성 측면의 위험도가 커집니다.
- C#에서 unsafe 코드를 컴파일하려면 빌드 속성 설정이 필요합니다.
unsafe 예제
- C# 에서는 일반적으로 포인터를 사용하지 않습니다.
- 간혹 C++ 에서 사용하던 Class를 가져오면서 포인터를 사용해야 하는 경우 unsafe를 사용합니다.
class UnsafeTEST
{
unsafe static void SquarePtrParam(int* p)
{
*p *= *p;
}
unsafe static void Main()
{
int i = 5;
SquarePtrParam(&i);
Console.WriteLine(i);
}
}
unsafe 사용시 빌드 속성
- unsafe 한정자를 사용할 경우에는 안전하지 않은 코드 허용(F) 를 체크해야지만, 빌드 오류가 나지 않습니다.
정리
- unsafe는 거의 모든 C# 프로그래머가 사용하지 않는 기능입니다.
- 위험성이 높아 가급적 사용하지 않는 편이 좋으며, unsafe 키워드를 사용해야할 상황도 거의 없습니다.