스택큐힙리스트

extern이 C#에서 어떻게 작동합니까? 본문

카테고리 없음

extern이 C#에서 어떻게 작동합니까?

스택큐힙리스트 2023. 11. 18. 00:19
반응형

이것은 한국어로 번역된 p 태그입니다.

언제나 리플렉터까지 깊이 들어가다 보면 소스가없는 extern 메소드를 만나게 됩니다. 나는 msdn 문서를 읽었습니다. http://msdn.microsoft.com/en-us/library/e59b22c5(v=vs.80).aspx 이 글에서 알아낸 바는 extern 수정자를 가진 메소드는 주입되어야한다는 것입니다. 이것은 추상 팩토리 패턴과 유사하게 작동한다고 해석했습니다. 또한 비정적인 extern 메소드는 본 적이 없는 것 같습니다. 정적 선언은 필수 일까요 (이것은 이해가 갈 것 같습니다)? 여전히 추측을 하고 있으며 어떻게 작동하는지 정확히는 모릅니다. 나에게는 컴파일러가 처리를 완화하는 특정 속성을 인식해야한다는 것 같습니다. 그러나 모든 속성이 무엇인지는 알지 못합니다. MSDN 예제에서 발견 한 MethodImplAttributeDllImportAttribute와 같은 속성이 제외되었습니다. extern 속성을 어떻게 활용할 수 있을까요? 많은 경우 성능을 향상시킬 수 있다고 합니다. 또한 Object.InternalGetEquals()와 같은 extern 메소드의 소스를 확인하는 방법은 무엇일까요?

답변 1

10.6.7 섹션을 읽어보기를 고려하세요. 이 섹션은 여러분의 질문 중 많은 것에 답변합니다. 이곳에서 일부를 편의상 재생산합니다:



extern 수정자를 포함한 메서드 선언은 외부 메서드라고 합니다. 외부 메서드는 일반적으로 C# 이외의 언어를 사용하여 외부에서 구현됩니다. 외부 메서드의 실제 구현은 제공되지 않으므로 외부 메서드의 메서드 본문은 세미콜론으로만 구성됩니다. 외부 메서드는 제네릭일 수 없습니다. extern 수정자는 일반적으로 DllImport 특성과 함께 사용되어 외부 메서드를 DLL(동적 링크 라이브러리)로 구현할 수 있도록 합니다. 실행 환경은 외부 메서드의 구현을 제공할 수 있는 다른 메커니즘을 지원할 수도 있습니다. 외부 메서드가 DllImport 특성을 포함하는 경우, 메서드 선언에는 정적 수정자도 포함되어야 합니다.



누군가 extern 속성을 어떻게 활용합니까?




  • 원하는 언매니지드 언어로 코드를 작성하세요.

  • 진입점을 내보내는 DLL로 컴파일하세요.

  • 주어진 DLL에서 extern 메소드로 정의된 인터옵 라이브러리를 만드세요.

  • C#에서 호출하세요.

  • 이로써 이익을 얻을 수 있습니다!



Object.InternalGetEquals()와 같은 extern 메소드의 소스를 살펴보는 방법은 무엇입니까?



https://github.com/dotnet/coreclr/tree/master/src/vm로 이동하세요.

답변 2

extern 키워드는 C#에서 사용되는 외부 함수 또는 라이브러리에 접근하는 데 사용됩니다. C#에서 extern 키워드를 사용하면 플랫폼 별로 다른 기능을 실행하거나 C++과 같이 저수준의 작업을 수행하는 등의 작업을 할 수 있습니다.
이 외부 함수 또는 라이브러리는 C#에서 직접 작성한 코드가 아닌 다른 언어 또는 플랫폼에서 작성된 코드입니다. 이러한 외부 함수 또는 라이브러리에는 C#에서 직접 접근할 수 없는 코드가 포함되어 있을 수 있습니다. 따라서 extern을 사용하여 이러한 외부 코드로의 접근을 가능하게 합니다.
예를 들어, C#에서 외부 C++ 라이브러리에 접근해야 하는 경우 extern 키워드를 사용하여 해당 라이브러리의 함수를 호출할 수 있습니다. 이렇게 함으로써 C#에서는 더 높은 수준의 추상화 기능을 제공하는 동시에 C++과 같은 저수준의 작업을 할 수 있습니다.
외부 함수 또는 라이브러리에 대한 extern 키워드의 사용은 다음과 같은 단계로 이루어집니다. 먼저, extern 키워드를 사용하여 외부 함수 또는 라이브러리의 서명(함수 이름 및 매개변수)을 정의합니다. 그런 다음이 서명을 참조하거나 호출할 수 있습니다. C#에서는 extern 키워드를 사용하여 이러한 외부 함수 또는 라이브러리를 참조하고 호출하는 데 필요한 모든 코드를 작성할 수 있습니다.
또한 extern 키워드는 DllImport 특성과 함께 사용될 수도 있습니다. DllImport 특성은 외부 DLL(동적 링크 라이브러리)을 가져오는 데 사용됩니다. DllImport 특성은 extern 키워드와 함께 사용되어 해당 DLL의 함수에 접근할 수 있도록 합니다. 이를 통해 특정 플랫폼에서 실행할 수 있는 기능을 C#에서 호출할 수 있습니다.
C#의 extern 키워드는 다른 언어 또는 플랫폼의 기능을 활용하려는 경우 매우 유용합니다. C#으로 작성된 응용 프로그램이 다른 언어로 작성된 코드를 사용해야 하는 경우 extern 키워드를 사용하여 이전 작업의 재사용성과 비즈니스 로직을 개선할 수 있습니다. 또한 저수준의 작업을 수행하기 위한 기존 코드와의 호환성을 유지할 수 있습니다.
따라서 extern 키워드는 C#에서 응용 프로그램의 성능과 기능을 향상시킬 수 있는 강력한 도구로 활용될 수 있습니다. C# 프로그래머에게는 이러한 외부 함수 또는 라이브러리에 대한 이해와 사용법이 중요합니다. 이를 통해 프로그래머는 C#으로 작성된 응용 프로그램에 고유한 기능을 추가하고 개선할 수 있습니다.

반응형
Comments