externo (Referência C#)
O extern
modificador é usado para declarar um método que é implementado externamente. Um uso comum do extern
modificador é com o DllImport
atributo quando você está usando serviços de interoperabilidade para chamar código não gerenciado. Nesse caso, o método também deve ser declarado como static
, como mostrado no exemplo a seguir:
[DllImport("avifil32.dll")]
private static extern void AVIFileInit();
A extern
palavra-chave também pode definir um alias de assembly externo, o que torna possível fazer referência a diferentes versões do mesmo componente de dentro de um único assembly. Para obter mais informações, consulte alias externos.
É um erro usar o resumo e extern
modificadores juntos para modificar o mesmo membro. Usar o extern
modificador significa que o método é implementado fora do código C#, enquanto usar o abstract
modificador significa que a implementação do método não é fornecida na classe.
A palavra-chave extern tem usos mais limitados em C# do que em C++. Para comparar a palavra-chave C# com a palavra-chave C++, consulte Usando extern para especificar vinculação na referência da linguagem C++.
Exemplo 1
Neste exemplo, o programa recebe uma cadeia de caracteres do usuário e a exibe dentro de uma caixa de mensagem. O programa usa o MessageBox
método importado da biblioteca de User32.dll.
//using System.Runtime.InteropServices;
class ExternTest
{
[DllImport("User32.dll", CharSet=CharSet.Unicode)]
public static extern int MessageBox(IntPtr h, string m, string c, int type);
static int Main()
{
string myString;
Console.Write("Enter your message: ");
myString = Console.ReadLine();
return MessageBox((IntPtr)0, myString, "My Message Box", 0);
}
}
Exemplo 2
Este exemplo ilustra um programa C# que chama uma biblioteca C (uma DLL nativa).
Crie o seguinte arquivo C e nomeie-o
cmdll.c
:// cmdll.c // Compile with: -LD int __declspec(dllexport) SampleMethod(int i) { return i*10; }
Abra uma janela do Prompt de Comando de Ferramentas Nativas do Visual Studio x64 (ou x32) no diretório de instalação do Visual Studio e compile o
cmdll.c
arquivo digitando cl -LD cmdll.c no prompt de comando.No mesmo diretório, crie o seguinte arquivo C# e nomeie-o
cm.cs
:// 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)); } }
Abra uma janela do Prompt de Comando de Ferramentas Nativas do Visual Studio x64 (ou x32) no diretório de instalação do Visual Studio e compile o
cm.cs
arquivo digitando:csc cm.cs (para o prompt de comando x64) —ou— csc -platform:x86 cm.cs (para o prompt de comando x32)
Isso criará o arquivo
cm.exe
executável .Execute o
cm.exe
. OSampleMethod
método passa o valor 5 para o arquivo DLL, que retorna o valor multiplicado por 10. O programa produz a seguinte saída:SampleMethod() returns 50.
Especificação da linguagem C#
Para obter mais informações, consulte a Especificação da linguagem C#. A especificação da linguagem é a fonte definitiva para a sintaxe e o uso do C#.