CallingConventions 列挙体
この列挙体には、メンバ値のビットごとの組み合わせを可能にする FlagsAttribute 属性が含まれています。
名前空間: System.Reflectionアセンブリ: mscorlib (mscorlib.dll 内)

<SerializableAttribute> _ <FlagsAttribute> _ <ComVisibleAttribute(True)> _ Public Enumeration CallingConventions
[SerializableAttribute] [FlagsAttribute] [ComVisibleAttribute(true)] public enum class CallingConventions

メンバ名 | 説明 | |
---|---|---|
![]() | Any | Standard または VarArgs のいずれかの呼び出し規約を使用することを指定します。 |
![]() | ExplicitThis | シグネチャが、インスタンスまたは仮想メソッド (非静的メソッド) への呼び出しを表す関数ポインタ シグネチャであることを示します。ExplicitThis が設定されている場合は HasThis も設定する必要があります。呼び出されるメソッドに渡される最初の引数は this ポインタのままですが、その引数の型は不明になります。したがって、this ポインタの型 (またはクラス) を記述するトークンが、そのメタデータ シグネチャに明示的に格納されます。 |
![]() | HasThis | インスタンスまたは仮想メソッド (非静的メソッド) を指定します。実行時に、呼び出されるメソッドに、目的のオブジェクトへのポインタが最初の引数 (this ポインタ) として渡されます。メタデータに格納されているシグネチャには、この最初の引数の型は含まれていません。メソッドが明らかに指定されており、そのメソッドを所有するクラスをメタデータから確認できるためです。 |
![]() | Standard | 共通言語ランタイムで決定されている既定の呼び出し規約を指定します。この静的メソッドの呼び出し規約を使用します。インスタンスや仮想メソッドには、HasThis を使用します。 |
![]() | VarArgs | 引数の数が変化するメソッドの呼び出し規約を指定します。 |

ネイティブの呼び出し規約は、コンパイル済みのメソッドに渡される引数の順序やレイアウトを制御する一連の規則です。この規則は、戻り値を渡す方法、引数に使用するレジスタ、呼び出されるメソッドまたは呼び出し元メソッドのいずれがスタックから引数を削除するか、なども制御します。

Public Class MyClass1 Public Sub New(ByVal i As Integer) End Sub Public Shared Sub Main() Try Dim myType As Type = GetType(MyClass1) Dim types(0) As Type types(0) = GetType(Integer) ' Get the public instance constructor that takes an integer parameter. Dim constructorInfoObj As ConstructorInfo = _ myType.GetConstructor(BindingFlags.Instance Or _ BindingFlags.Public, Nothing, _ CallingConventions.HasThis, types, Nothing) If Not (constructorInfoObj Is Nothing) Then Console.WriteLine("The constructor of MyClass1 that " + _ "is a public instance method and takes an " + _ "integer as a parameter is: ") Console.WriteLine(constructorInfoObj.ToString()) Else Console.WriteLine("The constructor MyClass1 that " + _ "is a public instance method and takes an " + _ "integer as a parameter is not available.") End If Catch e As ArgumentNullException Console.WriteLine("ArgumentNullException: " + e.Message) Catch e As ArgumentException Console.WriteLine("ArgumentException: " + e.Message) Catch e As SecurityException Console.WriteLine("SecurityException: " + e.Message) Catch e As Exception Console.WriteLine("Exception: " + e.Message) End Try End Sub End Class
using System; using System.Reflection; using System.Security; public class MyClass1 { public MyClass1(int i){} public static void Main() { try { Type myType = typeof(MyClass1); 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 MyClass1 that is a public " + "instance method and takes an integer as a parameter is: "); Console.WriteLine(constructorInfoObj.ToString()); } else { Console.WriteLine("The constructor of MyClass1 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); } } }
using namespace System; using namespace System::Reflection; using namespace System::Security; public ref class MyClass1 { public: MyClass1( int i ){} }; int main() { try { Type^ myType = MyClass1::typeid; array<Type^>^types = gcnew array<Type^>(1); types[ 0 ] = int::typeid; // Get the public instance constructor that takes an integer parameter. ConstructorInfo^ constructorInfoObj = myType->GetConstructor( static_cast<BindingFlags>(BindingFlags::Instance | BindingFlags::Public), nullptr, CallingConventions::HasThis, types, nullptr ); if ( constructorInfoObj != nullptr ) { Console::WriteLine( "The constructor of MyClass1 that is a public instance method and takes an integer as a parameter is: " ); Console::WriteLine( constructorInfoObj ); } else { Console::WriteLine( "The constructor of MyClass1 that is a public instance method and takes an integer as a parameter is not available." ); } } catch ( ArgumentNullException^ e ) { Console::WriteLine( "ArgumentNullException: {0}", e->Message ); } catch ( ArgumentException^ e ) { Console::WriteLine( "ArgumentException: {0}", e->Message ); } catch ( SecurityException^ e ) { Console::WriteLine( "SecurityException: {0}", e->Message ); } catch ( Exception^ e ) { Console::WriteLine( "Exception: {0}", e->Message ); } }
import System.*; import System.Reflection.*; import System.Security.*; public class MyClass1 { public MyClass1(int i) { } //MyClass1 public static void main(String[] args) { try { Type myType = MyClass1.class.ToType(); Type types[] = new Type[1]; types.set_Item(0, int.class.ToType()); // 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 MyClass1 that is a public " + "instance method and takes an integer as a parameter is: "); Console.WriteLine(constructorInfoObj.ToString()); } else { Console.WriteLine("The constructor of MyClass1 that is a " + "public instance method and takes an integer " + "as a parameter is not available."); } } catch (ArgumentNullException e) { Console.WriteLine("ArgumentNullException: " + e.get_Message()); } catch (ArgumentException e) { Console.WriteLine("ArgumentException: " + e.get_Message()); } catch (SecurityException e) { Console.WriteLine("SecurityException: " + e.get_Message()); } catch (System.Exception e) { Console.WriteLine("Exception: " + e.get_Message()); } } //main } //MyClass1

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


- CallingConventions 列挙体のページへのリンク