Type.GetConstructorsとは? わかりやすく解説

Type.GetConstructors メソッド ()

現在の Type に対して定義されているパブリック コンストラクタをすべて返します

名前空間: System
アセンブリ: mscorlib (mscorlib.dll 内)
構文構文

<ComVisibleAttribute(True)> _
Public Function GetConstructors As
 ConstructorInfo()
Dim instance As Type
Dim returnValue As ConstructorInfo()

returnValue = instance.GetConstructors
[ComVisibleAttribute(true)] 
public ConstructorInfo[] GetConstructors ()
[ComVisibleAttribute(true)] 
public:
virtual array<ConstructorInfo^>^ GetConstructors () sealed
/** @attribute ComVisibleAttribute(true) */ 
public final ConstructorInfo[] GetConstructors ()
ComVisibleAttribute(true) 
public final function GetConstructors () :
 ConstructorInfo[]

戻り値
現在の Type に対して定義されすべてのパブリック インスタンス コンストラクタ (ただし、型初期化子 (静的コンストラクタ) を除く) を表している ConstructorInfo オブジェクト配列パブリック インスタンス コンストラクタ現在の Type に対して定義されている場合、または現在の Typeジェネリック型またはジェネリック メソッドの定義の型パラメータ表している場合は、型 ConstructorInfo の空の配列返されます。

解説解説

型に対すリフレクション時に Get メソッドによって返される基本クラスメンバ次の表に示します

  1. 名前と署名による隠ぺいでは、カスタム修飾子戻り値の型、パラメータの型、sentinel、およびアンマネージ呼び出し規約含めて署名すべての部分判断対象となります。これはバイナリ比較です。

  2. リフレクション場合プロパティおよびイベントは名前と署名によって隠ぺいされています。基本クラスget アクセサset アクセサ両方を持つプロパティがあり、派生クラスには get アクセサしかない場合派生クラスプロパティにより基本クラスプロパティ隠ぺいされ、基本クラスset アクセサにはアクセスできません。

  3. カスタム属性は、共通型システム一部ではありません。

このメソッド オーバーロードは、BindingFlags.Public | BindingFlags.Instance (Visual Basic の場合BindingFlags.PublicOrBindingFlags.Instance) を使用して GetConstructors(BindingFlags) メソッド オーバーロード呼び出します。このメソッド オーバーロードクラス初期化子 (.cctor) を見つけません。クラス初期化子を見つけるには、BindingFlags をとるオーバーロード使用し、BindingFlags.Static | BindingFlags.NonPublic (Visual Basic の場合BindingFlags.StaticOrBindingFlags.NonPublic) を指定します。TypeInitializer プロパティ使用してクラス初期化子取得することもできます

現在の Type構築ジェネリック型表している場合、このメソッドは、型パラメータ適切な型の引数置き換えて ConstructorInfo オブジェクト返します。たとえば、クラス C<T>コンストラクタ C(T t1) (Visual Basic の場合Sub New(ByVal t1 As T)) を持っている場合は、GetConstructorsC<int> 呼び出すと、C(int t1) (C# の場合) または Sub New(ByVal t1 As Integer) (Visual Basic の場合) を表すConstructorInfo返されます。

現在の Typeジェネリック型パラメータ表している場合GetConstructors メソッドは空の配列返します

使用例使用例

2 つインスタンス コンストラクタ1 つ静的コンストラクタを持つクラスからの GetConstructors オーバーロード出力例次に示します

Imports System
Imports System.Reflection

Public Class t
    
    Public Sub New()
    End Sub
    
    Shared Sub New()
    End Sub
    
    Public Sub New(i As
 Integer)
    End Sub
     
    Public Shared Sub Main()
        Dim p As ConstructorInfo() = GetType(t).GetConstructors()
        Console.WriteLine(p.Length)
        
        Dim i As Integer
        For i = 0 To p.Length - 1
            Console.WriteLine(p(i).IsStatic)
        Next i
    End Sub
End Class
using System;
using System.Reflection;

public class t {
    public t() {}
    static t() {}
    public t(int i) {}

    public static void Main()
 {
        ConstructorInfo[] p = typeof(t).GetConstructors();
        Console.WriteLine(p.Length);

        for (int i=0;i<p.Length;i++) {
            Console.WriteLine(p[i].IsStatic);
        }
    }
}
using namespace System;
using namespace System::Reflection;
public ref class t
{
public:
   t(){}

   static t(){}

   t( int /*i*/ ){}

};

int main()
{
   array<ConstructorInfo^>^p = t::typeid->GetConstructors();
   Console::WriteLine( p->Length );
   for ( int i = 0; i < p->Length; i++
 )
   {
      Console::WriteLine( p[ i ]->IsStatic );

   }
}
import System.*;
import System.Reflection.*;

public class T
{
    public T()
    {
    } //T

    static 
    {
    } //T

    public T(int i)
    {
    } //T

    public static void main(String[]
 args)
    {
        ConstructorInfo p[] = T.class.ToType().GetConstructors();
        Console.WriteLine(p.length);
        for (int i=0;i < p.length;i++) {
            Console.WriteLine(p[i].get_IsStatic());
        } 
    } //main
} //T
import System;
import System.Reflection;

public class t {
    public function t() {}
    static t {}
    public function t(i : int)
 {}

    public static function
 Main(): void  {
        var p : ConstructorInfo[] = t.GetConstructors();
        Console.WriteLine(p.Length);

        for (var i : int
 =0;i<p.Length;i++) {
            Console.WriteLine(p[i].IsStatic);
        }
    }
}
t.Main();

このコード出力次のとおりです。

2

False

False

GetConstructors オーバーロードBindingFlags.Public および BindingFlags.Instance だけを使用するため、静的コンストラクタに対しては、for 式によるカウントも、IsStatic による評価行われません。

静的コンストラクタを見つけるには、次のコード例に示すように、GetConstructors(BindingFlags) オーバーロード使用しBindingFlags.PublicBindingFlags.StaticBindingFlags.NonPublicBindingFlags.Instance組み合わせ (論理 OR) を渡します

Imports System
Imports System.Reflection

Public Class t
    
    Public Sub New()
    End Sub
    
    Shared Sub New()
    End Sub
    
    Public Sub New(i As
 Integer)
    End Sub
     
    Public Shared Sub Main()
        Dim p As ConstructorInfo() = GetType(T).GetConstructors(
 _
           BindingFlags.Public Or _
           BindingFlags.Static Or _
           BindingFlags.NonPublic Or _
           BindingFlags.Instance)
        Console.WriteLine(p.Length)
        
        Dim i As Integer
        For i = 0 To p.Length - 1
            Console.WriteLine(p(i).IsStatic)
        Next i
    End Sub
End Class
using System;
using System.Reflection;
 
public class t {
    public t() {}
    static t() {}
    public t(int i) {}

    public static void Main()
 {
        ConstructorInfo[] p = typeof(t).GetConstructors(
           BindingFlags.Public | BindingFlags.Static |
           BindingFlags.NonPublic | BindingFlags.Instance);
        Console.WriteLine(p.Length);

        for (int i=0;i<p.Length;i++) {
            Console.WriteLine(p[i].IsStatic);
        }
    }
}
using namespace System;
using namespace System::Reflection;
public ref class t
{
public:
   t(){}

   t( int /*i*/ ){}

   static t(){}

};

int main()
{
   array<ConstructorInfo^>^p = t::typeid->GetConstructors( static_cast<BindingFlags>(BindingFlags::Public
 | BindingFlags::Static | BindingFlags::NonPublic | BindingFlags::Instance) );
   Console::WriteLine( p->Length );
   for ( int i = 0; i < p->Length; i++
 )
   {
      Console::WriteLine( p[ i ]->IsStatic );
   }
}
import System.*;
import System.Reflection.*;

public class T
{
    public T() 
    {
    } //T

    static
    {
    } //T

    public T(int i)
    {
    } //T

    public static void main(String[]
 args)
    {
        ConstructorInfo p[] = T.class.ToType().GetConstructors(
            (BindingFlags.Public | BindingFlags.Static | BindingFlags.NonPublic
            | BindingFlags.Instance)); 
        Console.WriteLine(p.length);
        for (int i=0;i< p.length;i++) {
            Console.WriteLine(p[i].get_IsStatic());
        } 
    } //main
} //T
import System;
import System.Reflection;
 
public class t {
    public function t() {}
    static t {}
    public function t(i : int)
 {}

    public static function
 Main() : void  {
        var p : ConstructorInfo[] = t.GetConstructors(
           BindingFlags.Public | BindingFlags.Static |
           BindingFlags.NonPublic | BindingFlags.Instance);
        Console.WriteLine(p.Length);

        for (var i:int=0;i<p.Length;i++)
 {
            Console.WriteLine(p[i].IsStatic);
        }
    }
}
t.Main();

この出力次のようになります

3

False

True

False

プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照

Type.GetConstructors メソッド (BindingFlags)

派生クラスによってオーバーライドされた場合指定した BindingFlags使用して現在の Type に対して定義されているコンストラクタ検索します

名前空間: System
アセンブリ: mscorlib (mscorlib.dll 内)
構文構文

<ComVisibleAttribute(True)> _
Public MustOverride Function
 GetConstructors ( _
    bindingAttr As BindingFlags _
) As ConstructorInfo()
Dim instance As Type
Dim bindingAttr As BindingFlags
Dim returnValue As ConstructorInfo()

returnValue = instance.GetConstructors(bindingAttr)
[ComVisibleAttribute(true)] 
public abstract ConstructorInfo[] GetConstructors (
    BindingFlags bindingAttr
)
[ComVisibleAttribute(true)] 
public:
virtual array<ConstructorInfo^>^ GetConstructors (
    BindingFlags bindingAttr
) abstract
/** @attribute ComVisibleAttribute(true) */ 
public abstract ConstructorInfo[] GetConstructors (
    BindingFlags bindingAttr
)
ComVisibleAttribute(true) 
public abstract function GetConstructors (
    bindingAttr : BindingFlags
) : ConstructorInfo[]

パラメータ

bindingAttr

検索実行方法指定する 1 つ上の BindingFlags から成るビット マスク

または

null 参照 (Visual Basic では Nothing) を返す 0。

戻り値
現在の Typeコンストラクタ定義されている場合は、型初期化子含め定義されているコンストラクタをのうち指定したバインディング制約一致するすべてのコンストラクタを表す ConstructorInfo オブジェクト配列現在の Type に対してコンストラクタ定義されていない場合、または現在の Typeジェネリック型またはジェネリック メソッドの定義の型パラメータ表している場合は、型 ConstructorInfo の空の配列返します

解説解説

パブリック コンストラクタだけを返すか、パブリック コンストラクタと非パブリック コンストラクタ両方返すかを指定するには、bindingAttr使用します

厳密に一致する対象存在しない場合は、一致するものを選択するために、bindertypes 配列指定されパラメータの型を強制的に変換しようとしますbinder一致するものを選択できない場合は、null 参照 (Visual Basic では Nothing) が返されます。

次の BindingFlags フィルタ フラグは、検索対象含めコンストラクタ定義するために使用できます

詳細については、「System.Reflection.BindingFlags」を参照してください

要求された型がパブリックではなく呼び出し元に現在のアセンブリ外の非パブリック オブジェクトリフレクションするための ReflectionPermission がない場合、このメソッドnull 参照 (Visual Basic では Nothing) を返します

このメソッド使用して初期化子 (.cctor) を取得するには、BindingFlags.Static | BindingFlags.NonPublic (Visual Basic の場合BindingFlags.StaticOrBindingFlags.NonPublic) を指定する必要があります。TypeInitializer プロパティ使用してクラス初期化子取得することもできます

現在の Type構築ジェネリック型表している場合、このメソッドは、型パラメータ適切な型の引数置き換えて ConstructorInfo オブジェクト返します。たとえば、クラス C<T> コンストラクタ C(T t1) (Visual Basic の場合Sub New(ByVal t1 As T)) を持っている場合は、GetConstructors を C<int>呼び出すと、C(int t1) (C# の場合) または Sub New(ByVal t1 As Integer) (Visual Basic の場合) を表すConstructorInfo返されます。

現在の Typeジェネリック型パラメータ表している場合GetConstructors メソッドは空の配列返します

使用例使用例

2 つインスタンス コンストラクタ1 つ静的コンストラクタを持つクラスからの GetConstructors オーバーロード出力例次に示します

Imports System
Imports System.Reflection

Public Class t
    
    Public Sub New()
    End Sub
    
    Shared Sub New()
    End Sub
    
    Public Sub New(i As
 Integer)
    End Sub
     
    Public Shared Sub Main()
        Dim p As ConstructorInfo() = GetType(t).GetConstructors()
        Console.WriteLine(p.Length)
        
        Dim i As Integer
        For i = 0 To p.Length - 1
            Console.WriteLine(p(i).IsStatic)
        Next i
    End Sub
End Class
using System;
using System.Reflection;

public class t {
    public t() {}
    static t() {}
    public t(int i) {}

    public static void Main()
 {
        ConstructorInfo[] p = typeof(t).GetConstructors();
        Console.WriteLine(p.Length);

        for (int i=0;i<p.Length;i++) {
            Console.WriteLine(p[i].IsStatic);
        }
    }
}
using namespace System;
using namespace System::Reflection;
public ref class t
{
public:
   t(){}

   static t(){}

   t( int /*i*/ ){}

};

int main()
{
   array<ConstructorInfo^>^p = t::typeid->GetConstructors();
   Console::WriteLine( p->Length );
   for ( int i = 0; i < p->Length; i++
 )
   {
      Console::WriteLine( p[ i ]->IsStatic );

   }
}
import System.*;
import System.Reflection.*;

public class T
{
    public T()
    {
    } //T

    static 
    {
    } //T

    public T(int i)
    {
    } //T

    public static void main(String[]
 args)
    {
        ConstructorInfo p[] = T.class.ToType().GetConstructors();
        Console.WriteLine(p.length);
        for (int i=0;i < p.length;i++) {
            Console.WriteLine(p[i].get_IsStatic());
        } 
    } //main
} //T
import System;
import System.Reflection;

public class t {
    public function t() {}
    static t {}
    public function t(i : int)
 {}

    public static function
 Main(): void  {
        var p : ConstructorInfo[] = t.GetConstructors();
        Console.WriteLine(p.Length);

        for (var i : int
 =0;i<p.Length;i++) {
            Console.WriteLine(p[i].IsStatic);
        }
    }
}
t.Main();

このコード出力次のとおりです。

2

False

False

GetConstructors オーバーロードPublic および Instance だけを使用するため、静的コンストラクタに対しては、for 式によるカウントも、IsStatic による評価行われません。

静的コンストラクタを見つけるには、次のコード例に示すように、GetConstructors オーバーロード使用しBindingFlags.PublicBindingFlags.StaticBindingFlags.NonPublicBindingFlags.Instance組み合わせ (論理 OR) を渡します

Imports System
Imports System.Reflection

Public Class t
    
    Public Sub New()
    End Sub
    
    Shared Sub New()
    End Sub
    
    Public Sub New(i As
 Integer)
    End Sub
     
    Public Shared Sub Main()
        Dim p As ConstructorInfo() = GetType(T).GetConstructors(
 _
           BindingFlags.Public Or _
           BindingFlags.Static Or _
           BindingFlags.NonPublic Or _
           BindingFlags.Instance)
        Console.WriteLine(p.Length)
        
        Dim i As Integer
        For i = 0 To p.Length - 1
            Console.WriteLine(p(i).IsStatic)
        Next i
    End Sub
End Class
using System;
using System.Reflection;
 
public class t {
    public t() {}
    static t() {}
    public t(int i) {}

    public static void Main()
 {
        ConstructorInfo[] p = typeof(t).GetConstructors(
           BindingFlags.Public | BindingFlags.Static |
           BindingFlags.NonPublic | BindingFlags.Instance);
        Console.WriteLine(p.Length);

        for (int i=0;i<p.Length;i++) {
            Console.WriteLine(p[i].IsStatic);
        }
    }
}
using namespace System;
using namespace System::Reflection;
public ref class t
{
public:
   t(){}

   t( int /*i*/ ){}

   static t(){}

};

int main()
{
   array<ConstructorInfo^>^p = t::typeid->GetConstructors( static_cast<BindingFlags>(BindingFlags::Public
 | BindingFlags::Static | BindingFlags::NonPublic | BindingFlags::Instance) );
   Console::WriteLine( p->Length );
   for ( int i = 0; i < p->Length; i++
 )
   {
      Console::WriteLine( p[ i ]->IsStatic );
   }
}
import System.*;
import System.Reflection.*;

public class T
{
    public T() 
    {
    } //T

    static
    {
    } //T

    public T(int i)
    {
    } //T

    public static void main(String[]
 args)
    {
        ConstructorInfo p[] = T.class.ToType().GetConstructors(
            (BindingFlags.Public | BindingFlags.Static | BindingFlags.NonPublic
            | BindingFlags.Instance)); 
        Console.WriteLine(p.length);
        for (int i=0;i< p.length;i++) {
            Console.WriteLine(p[i].get_IsStatic());
        } 
    } //main
} //T
import System;
import System.Reflection;
 
public class t {
    public function t() {}
    static t {}
    public function t(i : int)
 {}

    public static function
 Main() : void  {
        var p : ConstructorInfo[] = t.GetConstructors(
           BindingFlags.Public | BindingFlags.Static |
           BindingFlags.NonPublic | BindingFlags.Instance);
        Console.WriteLine(p.Length);

        for (var i:int=0;i<p.Length;i++)
 {
            Console.WriteLine(p[i].IsStatic);
        }
    }
}
t.Main();

この出力次のようになります

3

False

True

False

.NET Framework のセキュリティ.NET Frameworkセキュリティ
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照
関連項目
Type クラス
Type メンバ
System 名前空間
ConstructorInfo
BindingFlags
DefaultBinder
ReflectionPermission
GetConstructor

Type.GetConstructors メソッド


_Type.GetConstructors メソッド

COM オブジェクトに、System.Type.GetConstructors メソッドへのバージョン依存しないアクセス用意されています。
オーバーロードの一覧オーバーロードの一覧

名前 説明
_Type.GetConstructors () COM オブジェクトに、Type.GetConstructors メソッドへのバージョン依存しないアクセス用意されています。
_Type.GetConstructors (BindingFlags) COM オブジェクトに、Type.GetConstructors メソッドへのバージョン依存しないアクセス用意されています。
参照参照

関連項目

_Type インターフェイス
_Type メンバ
System.Runtime.InteropServices 名前空間


このページでは「.NET Framework クラス ライブラリ リファレンス」からType.GetConstructorsを検索した結果を表示しています。
Weblioに収録されているすべての辞書からType.GetConstructorsを検索する場合は、下記のリンクをクリックしてください。
 全ての辞書からType.GetConstructors を検索

英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「Type.GetConstructors」の関連用語

Type.GetConstructorsのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



Type.GetConstructorsのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2025 Microsoft.All rights reserved.

©2025 GRAS Group, Inc.RSS