Partilhar via


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).

  1. Crie o seguinte arquivo C e nomeie-o cmdll.c:

    // cmdll.c
    // Compile with: -LD
    int __declspec(dllexport) SampleMethod(int i)
    {
      return i*10;
    }
    
  2. 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.

  3. 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));
        }
    }
    
  4. 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.exeexecutável .

  5. Execute o cm.exe. O SampleMethod 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#.

Consulte também