2009-02-27 3 views

답변

16

고정 문은 unsafe modifier의 컨텍스트에서 사용됩니다. Unsafe는 일반적인 C# 연산 범위를 벗어나는 포인터 연산 (예 : 저레벨 API 호출)을 사용한다고 선언합니다. fixed 문은 메모리를 잠 그어서 가비지 수집기가 아직 사용 중일 때 다시 할당하지 않도록하기 위해 사용됩니다. 안전하지 않은 컨텍스트 외부에서는 고정 된 명령문을 사용할 수 없습니다. 이 고정 문을 볼 때, 컴파일러는 그것을 알고해야하는 코드 블록/방법은 안전하지 않은 것으로 지정하는 명시적인 필요가 왜

public static void PointyMethod(char[] array) 
{ 
    unsafe 
    { 
     fixed (char *p = array) 
     { 
      for (int i=0; i<array.Length; i++) 
      { 
       System.Console.Write(*(p+i)); 
      } 
     } 
    } 
} 
+0

날 궁금합니다. – arul

+0

사실이지만 메서드, 형식 또는 코드 블록과 같은 컨텍스트를 유추 할 수 없다고 생각합니다. 그러나 이것은 단지 추측 일뿐입니다. – cgreeno

+0

컴파일러는 고정 된 명령문을 안전하지 않은 명령문으로 자동 줄 바꿈 할 수 있습니다. 어쩌면 안전하지 않은 코드의 두포 아래에 다른 작업이있을 수 있습니다.이 작업은 천천히 실행되는 일반 '안전'코드를 만들 수 있습니다. – arul

관련 문제