Type.IsAssignableFrom メソッドとは? わかりやすく解説

Weblio 辞書 > コンピュータ > .NET Framework クラス ライブラリ リファレンス > Type.IsAssignableFrom メソッドの意味・解説 

Type.IsAssignableFrom メソッド

指定した Typeインスタンス現在の Typeインスタンス代入できるかどうか判断します

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

Public Overridable Function
 IsAssignableFrom ( _
    c As Type _
) As Boolean
public virtual bool IsAssignableFrom (
    Type c
)
public:
virtual bool IsAssignableFrom (
    Type^ c
)
public boolean IsAssignableFrom (
    Type c
)
public function IsAssignableFrom (
    c : Type
) : boolean

パラメータ

c

現在の Type比較する Type

戻り値
true返されるのは、c および現在の Type が同じ型を表している場合現在の Typec継承可能な階層内にある場合現在の Typec実装されるインターフェイスである場合、または cジェネリック型パラメータであり、現在の Typec制約1 つ表している場合です。false返されるのは、これらの条件いずれも満たされない場合、または cnull 参照 (Visual Basic では Nothing) である場合です。

解説解説

このメソッドは、派生クラスオーバーライドできます

メモメモ

ジェネリック型定義は、クローズ構築から割り当てることはできません。つまり、クローズ構築MyGenericList<int> (Visual Basic の場合MyGenericList(Of Integer)) を型 MyGenericList<T>変数割り当てることはできません。

GetElementType を使用してType要素型を判別します。

使用例使用例

配列使用する IsAssignableFrom メソッドの例を次に示します

Imports System

Class ArrayTypeTest

    Public Shared Sub Main()
        Dim i As Integer
 = 1
        Dim array10(10) As Integer
        Dim array2(2) As Integer
        Dim array22(2, 2) As Integer
        Dim array24(2, 4) As Integer
        Dim array333(3, 3, 3) As Integer
        Dim array10Type As Type = array10.GetType()
        Dim array2Type As Type = array2.GetType()
        Dim array22Type As Type = array22.GetType()
        Dim array24Type As Type = array24.GetType()
        Dim array333Type As Type = array333.GetType()

        ' If X and Y are not both arrays, then return false.
        Console.WriteLine("Is int[2] assignable from int? {0}.",
 array2Type.IsAssignableFrom(i.GetType()))
        ' If X and Y have same type and rank, then return true.
        Console.WriteLine("Is int[2] assignable from int[10]?
 {0}.", array2Type.IsAssignableFrom(array10Type))
        Console.WriteLine("Is int[2,2] assignable from int[2,4]?
 {0}.", array22Type.IsAssignableFrom(array24Type))
        Console.WriteLine("Is int[2,4] assignable from int[2,2]?
 {0}.", array24Type.IsAssignableFrom(array22Type))
        ' If X and Y do not have the same rank, then return false.
        Console.WriteLine("Is int[2,2] assignable from int[10]?
 {0}.", array22Type.IsAssignableFrom(array10Type))
        Console.WriteLine("Is int[2,2] assignable from int[3,3,3]?
 {0}.", array22Type.IsAssignableFrom(array333Type))
        Console.WriteLine("Is int[3,3,3] is assignable from int[2,2]?
 {0}.", array333Type.IsAssignableFrom(array22Type))
    End Sub 'Main
End Class 'ArrayTypeTest
using System;
class ArrayTypeTest 
{
    public static void Main()
 
    {
        int i = 1;
        int [] array10 = new int
 [10];
        int [] array2 = new int[2];
        int [,]array22 = new int[2
,2];
        int [,]array24 = new int[2
,4];
        int [,,]array333 = new int[3
,3,3];
        Type array10Type = array10.GetType();
        Type array2Type = array2.GetType();
        Type array22Type = array22.GetType();
        Type array24Type = array24.GetType();
        Type array333Type = array333.GetType();

        // If X and Y are not both arrays, then return false.
        Console.WriteLine("Is int[2] assignable from int?
 {0}.", array2Type.IsAssignableFrom(i.GetType()));
        // If X and Y have same type and rank, then return true.
        Console.WriteLine("Is int[2] assignable from int[10]?
 {0}.", array2Type.IsAssignableFrom(array10Type));
        Console.WriteLine("Is int[2,2] assignable from int[2,4]?
 {0}.", array22Type.IsAssignableFrom(array24Type));
        Console.WriteLine("Is int[2,4] assignable from int[2,2]?
 {0}.", array24Type.IsAssignableFrom(array22Type));
        // If X and Y do not have the same rank, then return false.
        Console.WriteLine("Is int[2,2] assignable from int[10]?
 {0}.", array22Type.IsAssignableFrom(array10Type));
        Console.WriteLine("Is int[2,2] assignable from int[3,3,3]?
 {0}.", array22Type.IsAssignableFrom(array333Type));
        Console.WriteLine("Is int[3,3,3] assignable from
 int[2,2]? {0}.", array333Type.IsAssignableFrom(array22Type));
    }
}
using namespace System;
int main()
{
   Int32 i = 1;
   array<Int32>^array10 = gcnew array<Int32>(10);
   array<Int32>^array2 = gcnew array<Int32>(2);
   array<Int32, 2>^array22 = gcnew array<Int32,2>(2,2);
   array<Int32, 2>^array24 = gcnew array<Int32,2>(2,4);
   array<Int32, 3>^array333 = gcnew array<Int32,3>(3,3,3);
   Type^ array10Type = array10->GetType();
   Type^ array2Type = array2->GetType();
   Type^ array22Type = array22->GetType();
   Type^ array24Type = array24->GetType();
   Type^ array333Type = array333->GetType();
   
   // If X and Y are not both arrays, then return false.
   Console::WriteLine( "Is Int32[2] assignable from Int32? {0}.", array2Type->IsAssignableFrom(
 i.GetType() ).ToString() );
   
   // If X and Y have same type and rank, then return true.
   Console::WriteLine( "Is Int32[2] assignable from Int32[10]? {0}.", array2Type->IsAssignableFrom(
 array10Type ).ToString() );
   Console::WriteLine( "Is Int32[2,2] assignable from Int32[2,4]? {0}.",
 array22Type->IsAssignableFrom( array24Type ).ToString() );
   Console::WriteLine( "Is Int32[2,4] assignable from Int32[2,2]? {0}.",
 array24Type->IsAssignableFrom( array22Type ).ToString() );
   
   // If X and Y do not have the same rank, then return false.
   Console::WriteLine( "Is Int32[2,2] assignable from Int32[10]? {0}.",
 array22Type->IsAssignableFrom( array10Type ).ToString() );
   Console::WriteLine( "Is Int32[2,2] assignable from Int32[3,3,3]? {0}.",
 array22Type->IsAssignableFrom( array333Type ).ToString() );
   Console::WriteLine( "Is Int32[3,3,3] assignable from int[2,2]?
 {0}.", array333Type->IsAssignableFrom( array22Type ).ToString() );
}

import System.*;

class ArrayTypeTest
{
    public static void main(String[]
 args)
    {
        int i = 1;
        int array10[] = new int[10];
        int array2[] = new int[2];
        int array22[,] = new int[2,
 2];
        int array24[,] = new int[2,
 4];
        int array333[, ,] = new int[3,
 3, 3];
        Type array10Type = array10.GetType();
        Type array2Type = array2.GetType();
        Type array22Type = array22.GetType();
        Type array24Type = array24.GetType();
        Type array333Type = array333.GetType();

        // If X and Y are not both arrays, then return false.
        Console.WriteLine("Is int[2] assignable from int?
 {0}.",
            System.Convert.ToString(array2Type.IsAssignableFrom(
            ((Int32)i).GetType())));

        // If X and Y have same type and rank, then return true.
        Console.WriteLine("Is int[2] assignable from int[10]?
 {0}.", 
            System.Convert.ToString(array2Type.IsAssignableFrom(array10Type)));
        Console.WriteLine("Is int[2,2] assignable from int[2,4]?
 {0}.",
            System.Convert.ToString(array22Type.IsAssignableFrom(
            array24Type)));
        Console.WriteLine("Is int[2,4] assignable from int[2,2]?
 {0}.",
            System.Convert.ToString(array24Type.IsAssignableFrom(
            array22Type)));

        // If X and Y do not have the same rank, then return false.
        Console.WriteLine("Is int[2,2] assignable from int[10]?
 {0}.",
            System.Convert.ToString(array22Type.IsAssignableFrom(
            array10Type)));
        Console.WriteLine("Is int[2,2] assignable from int[3,3,3]?
 {0}.",
            System.Convert.ToString(array22Type.IsAssignableFrom(
            array333Type)));
        Console.WriteLine("Is int[3,3,3] assignable from
 int[2,2]? {0}.",
            System.Convert.ToString(array333Type.IsAssignableFrom(
            array22Type)));
    } //main
} //ArrayTypeTest

このコードによって、次の出力生成されます。

int[2] is assignable from int? False
     int[2] is assignable from int[10]? True
     int[2,2] is assignable from int[2,4]? True
     int[2,4] is assignable from int[2,2]? True
     int[2,2] is assignable from int[10]? False
     int[2,2] is assignable from int[3,3,3]? False
    int[3,3,3] is assignable from int[2,2]? False
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照

_Type.IsAssignableFrom メソッド

メモ : このメソッドは、.NET Framework version 2.0新しく追加されたものです。

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

このメソッドは、CLS準拠していません。  

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

Function IsAssignableFrom ( _
    c As Type _
) As Boolean
bool IsAssignableFrom (
    Type c
)
bool IsAssignableFrom (
    Type^ c
)
boolean IsAssignableFrom (
    Type c
)
function IsAssignableFrom (
    c : Type
) : boolean

パラメータ

c

現在の Type比較する Type

戻り値
true返されるのは、c および現在の Type が同じ型を表している場合現在の Typec継承可能な階層内にある場合現在の Typec実装されるインターフェイスである場合、または cジェネリック型パラメータであり、現在の Typec制約1 つ表している場合です。false返されるのは、これらの条件いずれも満たされない場合、または cnull 参照 (Visual Basic では Nothing) である場合です。

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


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

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

辞書ショートカット

すべての辞書の索引

「Type.IsAssignableFrom メソッド」の関連用語

Type.IsAssignableFrom メソッドのお隣キーワード
検索ランキング

   

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



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

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

©2025 GRAS Group, Inc.RSS