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

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

_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) である場合です。

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

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
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照


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

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

辞書ショートカット

すべての辞書の索引

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

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

   

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



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

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

©2024 GRAS Group, Inc.RSS