Auf Englisch lesen

Freigeben über


CallingConventions Enumeration

Definition

Definiert die gültigen Aufrufkonventionen für eine Methode.

Diese Enumeration unterstützt eine bitweise Kombination ihrer Memberwerte.

C#
[System.Flags]
public enum CallingConventions
C#
[System.Flags]
[System.Serializable]
public enum CallingConventions
C#
[System.Flags]
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public enum CallingConventions
Vererbung
CallingConventions
Attribute

Felder

Name Wert Beschreibung
Any 3

Gibt an, dass entweder die Standard-Aufrufkonvention oder die VarArgs-Aufrufkonvention verwendet werden kann.

ExplicitThis 64

Gibt an, dass es sich bei der Signatur um eine Funktionszeiger-Signatur handelt, die einen Aufruf einer Instanz oder einer virtuellen Methode (keiner statischen Methode) darstellt. Wenn ExplicitThis festgelegt ist, muss HasThis ebenfalls festgelegt werden. Das erste an die aufgerufene Methode übergebene Argument ist weiterhin ein this-Zeiger, der Typ des ersten Arguments ist jedoch jetzt unbekannt. Deshalb wird ein Token, das den Typ (oder die Klasse) des this-Zeigers beschreibt, in der Signatur der Metadaten explizit gespeichert.

HasThis 32

Gibt eine Instanz oder eine virtuelle Methode (keine statische Methode) an. Zur Laufzeit wird der aufgerufenen Methode als erstes Argument ein Zeiger auf das Zielobjekt übergeben (der this-Zeiger). Die in den Metadaten gespeicherte Signatur enthält den Typ dieses ersten Arguments nicht, da die Methode bekannt ist und die Klasse, die diese besitzt, aus den Metadaten ermittelt werden kann.

Standard 1

Gibt die Standardaufrufkonvention an, die durch die Common Language Runtime bestimmt wurde. Verwenden Sie diese Aufrufkonvention für statische Methoden. Verwenden Sie HasThis für Instanzen oder virtuelle Methoden.

VarArgs 2

Gibt die Aufrufkonvention für Methoden mit variablen Argumenten an.

Beispiele

C#
using System;
using System.Reflection;
using System.Security;

public class MyClass3
{
    public MyClass3(int i) { }
    public static void Main()
    {
        try
        {
            Type myType = typeof(MyClass3);
            Type[] types = new Type[1];
            types[0] = typeof(int);
            // Get the public instance constructor that takes an integer parameter.
            ConstructorInfo constructorInfoObj = myType.GetConstructor(
                BindingFlags.Instance | BindingFlags.Public, null,
                CallingConventions.HasThis, types, null);
            if (constructorInfoObj != null)
            {
                Console.WriteLine("The constructor of MyClass3 that is a public " +
                    "instance method and takes an integer as a parameter is: ");
                Console.WriteLine(constructorInfoObj.ToString());
            }
            else
            {
                Console.WriteLine("The constructor of MyClass3 that is a public instance " +
                    "method and takes an integer as a parameter is not available.");
            }
        }
        catch (ArgumentNullException e)
        {
            Console.WriteLine("ArgumentNullException: " + e.Message);
        }
        catch (ArgumentException e)
        {
            Console.WriteLine("ArgumentException: " + e.Message);
        }
        catch (SecurityException e)
        {
            Console.WriteLine("SecurityException: " + e.Message);
        }
        catch (Exception e)
        {
            Console.WriteLine("Exception: " + e.Message);
        }
    }
}

Hinweise

Die konvention für native Aufrufe ist der Satz von Regeln für die Reihenfolge und das Layout der Argumente, die an kompilierte Methoden übergeben werden. Außerdem wird bestimmt, wie der Rückgabewert übergeben wird, welche Registrierungen für Argumente verwendet werden sollen, und ob die aufgerufene oder die aufrufende Methode Argumente aus dem Stapel entfernt.

Gilt für:

Produkt Versionen
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0