CallingConventions Wyliczenie

Definicja

Definiuje prawidłowe konwencje wywoływania dla metody.

To wyliczenie obsługuje bitową kombinację jego wartości składowych.

[System.Flags]
public enum CallingConventions
[System.Flags]
[System.Serializable]
public enum CallingConventions
[System.Flags]
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public enum CallingConventions
Dziedziczenie
CallingConventions
Atrybuty

Pola

Any 3

Określa, że Standard może być używana konwencja wywoływania lub VarArgs .

ExplicitThis 64

Określa, że podpis jest podpisem wskaźnika funkcji, reprezentującym wywołanie wystąpienia lub metody wirtualnej (a nie metody statycznej). Jeśli ExplicitThis jest ustawiona, HasThis należy również ustawić. Pierwszy argument przekazany do wywołanej metody jest nadal wskaźnikiem this , ale typ pierwszego argumentu jest teraz nieznany. W związku z tym token opisujący typ (lub klasę) this wskaźnika jest jawnie przechowywany w podpisie metadanych.

HasThis 32

Określa wystąpienie lub metodę wirtualną (nie metodę statyczną). W czasie wykonywania wywołana metoda jest przekazywana wskaźnik do obiektu docelowego jako pierwszy argument ( this wskaźnik). Podpis przechowywany w metadanych nie zawiera typu tego pierwszego argumentu, ponieważ metoda jest znana, a jej klasa właściciela może zostać odnaleziona z metadanych.

Standard 1

Określa domyślną konwencję wywoływania określoną przez środowisko uruchomieniowe języka wspólnego. Użyj tej konwencji wywoływania dla metod statycznych. Na przykład lub metody wirtualne używają metody HasThis.

VarArgs 2

Określa konwencję wywoływania metod ze zmiennymi argumentami.

Przykłady

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

Uwagi

Natywna konwencja wywoływania to zestaw reguł rządzących kolejnością i układem argumentów przekazywanych do skompilowanych metod. Określa również, jak przekazać wartość zwracaną, jakie rejestry mają być używane dla argumentów oraz czy wywołana metoda wywołująca usuwa argumenty ze stosu.

Dotyczy