Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Use o extern modificador para declarar um método implementado externamente. Um uso comum do extern modificador é com o DllImport atributo quando você usa serviços interoperabilidade para chamar código não gerenciado. Nesse caso, você também deve declarar o método como static, conforme mostrado no exemplo a seguir:
[DllImport("avifil32.dll")]
private static extern void AVIFileInit();
Você também pode usar a extern palavra-chave para definir um alias de assembly externo. Usando esse alias, você pode referenciar versões diferentes do mesmo componente de dentro de um único assembly. Para obter mais informações, consulte alias externo.
A linguagem C# faz referência a documentos da versão mais recentemente lançada da linguagem C#. Ele também contém a documentação inicial para funcionalidades em pré-visualizações públicas para o próximo lançamento do idioma.
A documentação identifica qualquer recurso introduzido pela primeira vez nas três últimas versões do idioma ou nas versões prévias públicas atuais.
Dica
Para descobrir quando um recurso foi introduzido pela primeira vez em C#, consulte o artigo sobre o histórico de versão da linguagem C#.
É um erro usar o abstrato e extern os 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 extern palavra-chave tem usos mais limitados em C# do que em C++. Para comparar a palavra-chave de C# com a palavra-chave de C++, consulte Usando extern para especificar vínculos na referência da linguagem C++.
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 método MessageBox 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 ilustra um programa C# que chama uma biblioteca em C (uma DLL nativa).
Crie o seguinte arquivo em C e atribua o nome
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 x86) no diretório de instalação do Visual Studio e compile o
cmdll.carquivo digitando cl -LD cmdll.c no prompt de comando.No mesmo diretório, crie o seguinte arquivo em C# e atribua o nome
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 x86) no diretório de instalação do Visual Studio e compile o
cm.csarquivo digitando:csc cm.cs (para o prompt de comando x64) — ou— csc -platform:x86 cm.cs (para o prompt de comando x86)
Esse comando cria o arquivo
cm.exeexecutável.Execute
cm.exe. O métodoSampleMethodpassa o valor 5 ao arquivo de 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 de C#.