extern (referência de C#)
O extern modificador é usado para declarar um método que é implementado externamente.Um uso comum a extern modificador é com o DllImport de atributo quando você estiver usando os serviços de interoperabilidade para chamar código não gerenciado.Nesse caso, o método também deve ser declarado como static, conforme mostrado no exemplo a seguir:
[DllImport("avifil32.dll")]
private static extern void AVIFileInit();
Observação |
---|
O extern palavra-chave também pode definir um alias de assembly externo, o que torna possível fazer referência a versões diferentes do mesmo componente de um único assembly.Para obter mais informações, consulte alias externo (referência de C#). |
É um erro para usar o Resumo (referência de C#) e extern modificadores juntos para modificar o mesmo membro.Usando o extern modificador significa que o método é implementado fora o código de C#, enquanto que usando o abstract modificador significa que a implementação do método não é fornecida na classe.
Observação |
---|
O extern palavra-chave mais limitou usos que em C++.Para comparar com a palavra-chave do C++, consulte Uso externo para especificar ligação na referência da linguagem C++. |
Exemplo
Neste exemplo, o programa recebe uma sequência do usuário e exibe-dentro de uma caixa de mensagem.O programa usa a MessageBox método importado da biblioteca 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);
}
}
Este exemplo cria uma DLL de um programa em c que é chamado de dentro do programa C# no exemplo a seguir.
// cmdll.c
// Compile with: /LD
int __declspec(dllexport) SampleMethod(int i)
{
return i*10;
}
Este exemplo usa dois arquivos, CM.cs e Cmdll.c, para demonstrar extern.O arquivo c é que a DLL externa criado no exemplo 2 que é chamado de dentro do programa 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));
}
}
Comentários
Para construir o projeto:
Compilar Cmdll.c para uma DLL usando a linha de comando do Visual C++:
cl /LD Cmdll.c
Compilar CM.cs usando a linha de comando:
csc CM.cs
Isso criará o arquivo executável CM.exe.Quando você executa esse programa, SampleMethod passará o valor 5 para o arquivo DLL, que retorna o valor multiplicado por 10.
Especificação da linguagem C#
Para obter mais informações, consulte Especificação de linguagem do C# A especificação da linguagem é a fonte definitiva para a sintaxe e o uso da linguagem C#.
Consulte também
Referência
Modificadores (referência de C#)
System.Runtime.InteropServices.DllImportAttribute