반응형
루프 내부 또는 외부에서 안전하지 않은 것을 사용하는 것이 어떤 차이가 있습니까?
과거에는 안전하지 않은 것을 사용할 필요가 없었지만 이제는 비트 맵을 조작하는 포인터로 작업하는 데 필요합니다.
달리 나타내는 문서를 찾을 수 없었지만 안전하지 않은 작동 방식과 루프 내부 또는 외부에서 사용하는 데 차이가 있는지 더 잘 이해하고 싶습니다.
하는 것이 더 낫습니까?
unsafe
{
for (int x = 0; x < maxX; x++)
{
for (int y = 0; y < maxY; y++)
{
//Unsafe pointer operations here.
}
}
}
아니면할까요? :
for (int x = 0; x < maxX; x++)
{
for (int y = 0; y < maxY; y++)
{
unsafe
{
//Unsafe pointer operations here.
}
}
}
unsafe
keyword는 수행중인 작업을 알고 있음을 컴파일러에 알리는 데 사용하는 마커입니다. 주요 목적은 코드 문서화와 유사합니다. unsafe
블록은 관리되지 않는 영역으로 지정한 코드의 일부를 보여줍니다. 실제 코드 실행 에는 영향을 미치지 않습니다 .
이를 염두에두고이 안전하지 않은 영역의 크기를 최대한 줄이는 것이 합리적입니다. 즉, 두 번째 접근 방식이 첫 번째 접근 방식보다 낫다는 것을 의미합니다.
메서드를 표시하고 클래스를로 표시하는 두 가지 다른 대안 unsafe
도 안전하지 않은 블록이 코드의 가능한 가장 작은 부분에 배치 될 때 접근 방식보다 열등 하다는 점을 언급 할 가치 가 있습니다.
unsafe
컴파일러가 허용 하고 출력을 생성 할 표현식을 변경 합니다. 자체적으로 런타임 오버 헤드를 부과하지 않습니다. 를 필요로하지 않는 표현식의 unsafe
경우 컴파일러는 unsafe
컨텍스트 내에서든 아니든 동일한 코드를 내 보냅니다.
컨텍스트 내에서만 사용할 수 있는 식에 대한 자세한 unsafe
내용은 C # 언어 사양 의 섹션 18을 참조하는 것이 좋습니다.
반응형
'development' 카테고리의 다른 글
구성 스크립트는 어떻게 만듭니 까? (0) | 2020.11.18 |
---|---|
AngularJS가 디렉티브 템플릿 내부의 DOM 요소에 액세스 (0) | 2020.11.18 |
SQL 문 단순화를위한 일반 규칙 (0) | 2020.11.18 |
.NET Framework 4.0 클라이언트 프로필과 .NET Framework 4.0 (0) | 2020.11.18 |
CSS`url ()`의`~`물결표는 무엇을합니까? (0) | 2020.11.18 |