이 항목은 아직 평가되지 않았습니다.- 이 항목 평가

extern(C# 참조)

extern 한정자는 외부에서 구현되는 메서드를 선언하는 데 사용됩니다. extern 한정자는 일반적으로 비관리 코드를 호출하기 위해 Interop 서비스를 사용할 때 DllImport 특성과 함께 사용됩니다. 이 경우 메서드는 다음 예제에서와 같이 static으로도 선언해야 합니다.

[DllImport("avifil32.dll")]
private static extern void AVIFileInit();
Note참고

extern 키워드는 외부 어셈블리 별칭을 정의하여 단일 어셈블리 내에서 동일한 구성 요소의 다른 버전을 참조할 수 있도록 합니다. 자세한 내용은 extern alias(C# 참조)를 참조하십시오.

abstract(C# 참조)extern 한정자를 함께 사용하여 같은 멤버를 제한할 수는 없습니다. extern 한정자는 메서드가 C# 코드 외부에서 구현됨을 나타내고 abstract 한정자는 해당 클래스에서 메서드가 구현되지 않음을 나타냅니다.

Note참고

extern 키워드는 C++에서보다 제한적으로 사용됩니다. C++ 키워드와 비교하려면 C++ 언어 참조의 Using extern to Specify Linkage를 참조하십시오.

다음 예제에서는 프로그램이 사용자로부터 문자열을 수신하여 메시지 상자에 표시합니다. 프로그램은 User32.dll 라이브러리에서 가져온 MessageBox 메서드를 사용합니다.

using System;
using System.Runtime.InteropServices;
class MainClass 
{
   [DllImport("User32.dll")]
   public static extern int MessageBox(int h, string m, string c, int type);

   static int Main() 
   {
      string myString; 
      Console.Write("Enter your message: ");
      myString = Console.ReadLine();
      return MessageBox(0, myString, "My Message Box", 0);
   }
}

이 예제에서는 C 프로그램에서 DLL을 만들며, 다음 예제의 C# 프로그램 내에서 이 DLL을 호출합니다.

// cmdll.c
// compile with: /LD
int __declspec(dllexport) SampleMethod(int i)
{
   return i*10;
}

다음 예제에서는 두 개의 파일 CM.csCmdll.c를 사용하여 extern 한정자를 설명합니다. C 파일은 예제 2에서 만든 외부 DLL로, C# 프로그램 내에서 호출됩니다.

// cm.cs
using System;
using System.Runtime.InteropServices;
public class MainClass 
{
   [DllImport("Cmdll.dll")]
   public static extern int SampleMethod(int x);

   static void Main() 
   {
      Console.WriteLine("SampleMethod() returns {0}.", SampleMethod(5));
   }
}

출력

SampleMethod() returns 50.

자세한 내용은 C# 언어 사양의 다음 단원을 참조하십시오.

  • 10.5.7 외부 메서드

이 정보가 도움이 되었습니까?
(1500자 남음)
커뮤니티 콘텐츠 추가
Microsoft는 MSDN 웹 사이트에 대한 귀하의 의견을 이해하기 위해 온라인 설문 조사를 진행하고 있습니다. 참여하도록 선택하시면 MSDN 웹 사이트에서 나가실 때 온라인 설문 조사가 표시됩니다.

참여하시겠습니까?