Lire en anglais

Partager via


CallingConventions Énumération

Définition

Définit les conventions d’appel valides pour une méthode.

Cette énumération prend en charge une combinaison au niveau du bit de ses valeurs membres.

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
Héritage
CallingConventions
Attributs

Champs

Nom Valeur Description
Any 3

Spécifie si la convention d'appel Standard ou VarArgs peut être utilisée.

ExplicitThis 64

Spécifie que la signature est une signature de pointeur fonction, représentant un appel à une instance ou une méthode virtuelle (pas une méthode statique). Si ExplicitThis est défini, HasThis doit aussi être défini. Le premier argument passé à la méthode appelée est toujours un pointeur this, mais le type du premier argument est désormais inconnu. Par conséquent, un jeton qui décrit le type (ou la classe) du pointeur this est explicitement stocké dans sa signature de métadonnées.

HasThis 32

Spécifie une instance ou une méthode virtuelle (pas une méthode statique). Au moment de l'exécution, un pointeur vers l'objet cible est passé à la méthode appelée en tant que premier argument (le pointeur this). La signature stockée dans les métadonnées n'inclut pas le type du premier argument, car la méthode est connue et sa classe propriétaire peut être découverte à partir des métadonnées.

Standard 1

Spécifie la convention d'appel par défaut telle que déterminée par le Common Language Runtime. Utilisez cette convention d'appel pour les méthodes statiques. Pour les méthodes d'instance ou virtuelles, utilisez HasThis.

VarArgs 2

Spécifie la convention d'appel pour les méthodes avec des arguments variables.

Exemples

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

Remarques

La convention d’appel native est l’ensemble des règles qui régissent l’ordre et la disposition des arguments passés aux méthodes compilées. Il détermine également comment passer la valeur de retour, les registres à utiliser pour les arguments et si la méthode appelée ou appelante supprime les arguments de la pile.

S’applique à

Produit Versions
.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