C# Language포인터


비고

포인터 및 unsafe

포인터의 성격으로 인해 포인터는 검증 할 수없는 코드를 생성합니다. 따라서 모든 포인터 유형을 사용하려면 unsafe 컨텍스트가 필요합니다.

System.IntPtr 형식은 void* 주위의 안전한 래퍼입니다. 당면 과제를 수행하기 위해 안전하지 않은 컨텍스트가 필요하지 않은 경우 void* 대한보다 편리한 대안으로 사용됩니다.

정의되지 않은 동작

C 및 C ++ 에서처럼 포인터의 잘못된 사용은 정의되지 않은 동작을 호출 할 수 있으며 가능한 부작용은 메모리 손상 및 의도하지 않은 코드 실행입니다. 대부분의 포인터 연산의 검증 할 수없는 특성으로 인해 포인터의 올바른 사용은 전적으로 프로그래머의 책임입니다.

포인터를 지원하는 유형

C 및 C ++과 달리 모든 C # 유형에는 해당 포인터 유형이 없습니다. 다음 두 조건이 모두 적용되면 형식 T 는 해당 포인터 유형을 가질 수 있습니다.

  • T 는 구조체 유형 또는 포인터 유형입니다.
  • T 는 이러한 기준을 모두 재귀 적으로 충족시키는 구성원 만 포함합니다.

포인터 관련 예