extern (C# Başvurusu)extern (C# Reference)

extern Değiştirici, dışarıdan uygulanan bir yöntemi bildirmek için kullanılır.The extern modifier is used to declare a method that is implemented externally. Bir extern değiştiricinin ortak kullanımı, yönetilmeyen koda çağrı DllImport yapmak için birlikte çalışabilirlik Hizmetleri kullandığınızda özniteliğiyle birlikte bulunur.A common use of the extern modifier is with the DllImport attribute when you are using Interop services to call into unmanaged code. Bu durumda, aşağıdaki örnekte gösterildiği gibi yöntemi de olarak staticbildirilmelidir:In this case, the method must also be declared as static, as shown in the following example:

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

extern Anahtar sözcüğü aynı zamanda bir dış derleme diğer adı tanımlayabilir, bu da aynı bileşenin farklı sürümlerine tek bir bütünleştirilmiş kod içinden başvuruda bulunmak mümkün hale gelir.The extern keyword can also define an external assembly alias, which makes it possible to reference different versions of the same component from within a single assembly. Daha fazla bilgi için bkz. extern diğer ad.For more information, see extern alias.

Aynı üyeyi değiştirmek için soyut ve extern değiştiricilerin birlikte kullanılması hatadır.It is an error to use the abstract and extern modifiers together to modify the same member. Değiştiricinin kullanılması, yöntemin C# kod dışında uygulandığı anlamına gelir abstract , ancak değiştiricinin kullanılması, yöntem uygulamasının sınıfta sağlanmadığı anlamına gelir. externUsing the extern modifier means that the method is implemented outside the C# code, whereas using the abstract modifier means that the method implementation is not provided in the class.

extern anahtar sözcüğünün kullanımları, C++'a göre C#'de daha fazladır.The extern keyword has more limited uses in C# than in C++. C# anahtar sözcüğünü C++ anahtar sözcüğüyle karşılaştırmak için, C++ Dilinde Bağlantı Belirtmek için extern Kullanma Başvurusu'na bakın.To compare the C# keyword with the C++ keyword, see Using extern to Specify Linkage in the C++ Language Reference.

Örnek 1Example 1

Bu örnekte, Program kullanıcıdan bir dize alır ve iletiyi bir ileti kutusu içinde görüntüler.In this example, the program receives a string from the user and displays it inside a message box. Program, User32. MessageBox dll kitaplığından içeri aktarılan yöntemi kullanır.The program uses the MessageBox method imported from the User32.dll library.

//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);
    }

}

Örnek 2Example 2

Bu örnek, bir C# C kitaplığına (yerel dll) çağıran bir programı gösterir.This example illustrates a C# program that calls into a C library (a native DLL).

  1. Aşağıdaki C dosyasını oluşturun ve adlandırın cmdll.c:Create the following C file and name it cmdll.c:

    // cmdll.c
    // Compile with: -LD
    int __declspec(dllexport) SampleMethod(int i)
    {
      return i*10;
    }
    
  2. Visual Studio yükleme dizininden bir Visual Studio x64 (veya x32) yerel araçlar komut istemi penceresi açın ve komut istemine cmdll.c CL-ld Cmdll. c yazarak dosyayı derleyin.Open a Visual Studio x64 (or x32) Native Tools Command Prompt window from the Visual Studio installation directory and compile the cmdll.c file by typing cl -LD cmdll.c at the command prompt.

  3. Aynı dizinde aşağıdaki C# dosyayı oluşturun ve adlandırın cm.cs:In the same directory, create the following C# file and name it 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. Visual Studio yükleme dizininden bir Visual Studio x64 (veya x32) yerel araçlar komut istemi penceresi açın ve şunu yazarak cm.cs dosyayı derleyin:Open a Visual Studio x64 (or x32) Native Tools Command Prompt window from the Visual Studio installation directory and compile the cm.cs file by typing:

    csc cm.cs (x64 komut istemi için) — veya — csc-platform: x86 cm.cs (x32 komut istemi için)csc cm.cs (for the x64 command prompt) —or— csc -platform:x86 cm.cs (for the x32 command prompt)

    Bu, yürütülebilir dosyayı cm.exeoluşturur.This will create the executable file cm.exe.

  5. cm.exe'i çalıştırın.Run cm.exe. SampleMethod Yöntemi, 5 değerini, 10 ile çarpılan değeri döndüren dll dosyasına geçirir.The SampleMethod method passes the value 5 to the DLL file, which returns the value multiplied by 10. Program aşağıdaki çıktıyı üretir:The program produces the following output:

    SampleMethod() returns 50.
    

C# dili belirtimiC# language specification

Daha fazla bilgi edinmek için, bkz. C# Dil Belirtimi.For more information, see the C# Language Specification. Dil belirtimi, C# sözdizimi ve kullanımı için kesin bir kaynaktır.The language specification is the definitive source for C# syntax and usage.

Ayrıca bkz.See also