C#에서는 포인터를 안전하지 않은(unsafe) 형식으로 지정하여 표면적으로는 지원하지 않고 있지만 기존의 C++의 라이브러리 등의 외부 라이브러리를 사용한다던가 프로그램의 비약적인 성능향상의 목적을 위해 사용할 필요성을 가지게 된다. 이러한 포인터를 사용하기 위해서는 다음과 같은 절차를 거쳐야 사용할 수 있다.
1. 솔루션설정변경
생성한 솔루션에서 설정메뉴를 통해 들어간 뒤 빌드를 확인하면 위와 같이 안전하지 않은 코드를 사용할 수 있는 체크박스를 확인할 수 있다. 이 항목을 체크하면 솔루션 내에서 포인터를 사용할 수 있는 조건을 만들어 주게 된다.
2. unsafe 블럭 생성
class Program
{
static void Main(string[] args)
{
int number = 10;
unsafe // 포인터를 사용하기 위해 unsafe로 블럭을 생성한다.
{
int* p = &number; // number의 주소를 p에 대입
Console.WriteLine("number의 값:{0},포인터의 값:{1}", number, *p);
// 각각의 값을 출력
}
}
}
위와 같이 포인터를 사용하고자 하는 공간에 unsafe 라는 키워드로 감싸주면 C++에서 처럼 포인터를 선언하고 사용할 수 있다.
연산자는 마찬가지로 값을 출력할때는 * , 주소를 가져올때는 &를 사용하게 되지만 C#에서는 직접적으로 상수나 값의 주소를 출력 할 수 없다고 한다. (MSDN 참조)
출처 : https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=crusaderholy&logNo=100109538500
'프로그래밍 언어 > C#' 카테고리의 다른 글
[C#] Nullable type, int? 널러블 타입에 대해서 (0) | 2023.07.17 |
---|---|
C# 공변성(Covariance)과 반공변성(Contravariance) (0) | 2023.07.16 |
.NET 환경의 컴파일 과정 - CLR, CIL, JIT, AOT (0) | 2023.07.16 |
C# 날짜 관련 함수(DateTime) (0) | 2023.06.26 |
C# DateTime & TimeSpan (0) | 2023.06.26 |