Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Bestimmt, ob der aktuellen Type-Instanz eine Instanz vom angegebenen Type zugewiesen werden kann.
Namespace: System
Assembly: mscorlib (in mscorlib.dll)
Syntax
'Declaration
Public Overridable Function IsAssignableFrom ( _
c As Type _
) As Boolean
'Usage
Dim instance As Type
Dim c As Type
Dim returnValue As Boolean
returnValue = instance.IsAssignableFrom(c)
public virtual bool IsAssignableFrom (
Type c
)
public:
virtual bool IsAssignableFrom (
Type^ c
)
public boolean IsAssignableFrom (
Type c
)
public function IsAssignableFrom (
c : Type
) : boolean
Parameter
- c
Der Type, der mit dem aktuellen Type verglichen werden soll.
Rückgabewert
true unter den folgenden Bedingungen: c und der aktuelle Type stellen denselben Typ dar; der aktuelle Type befindet sich in der Vererbungshierarchie von c; der aktuelle Type ist eine Schnittstelle, die von c implementiert wird; c ist ein generischer Typparameter, und der aktuelle Type stellt eine der Einschränkungen von c dar. false, wenn keine dieser Bedingungen zutrifft oder cNULL (Nothing in Visual Basic) ist.
Hinweise
Diese Methode kann von einer abgeleiteten Klasse überschrieben werden.
Hinweis
Ein geschlossen konstruierter Typ kann keiner generischen Typdefinition zugewiesen werden. Das heißt, Sie können einer Variable vom MyGenericList<T>-Typ nicht den geschlossen konstruierten MyGenericList<int>-Typ (MyGenericList(Of Integer) in Visual Basic) zuweisen.
Bestimmen Sie die Elementtypen eines Type mit GetElementType.
Beispiel
Im folgenden Beispiel wird die Verwendung der IsAssignableFrom-Methode mit Arrays veranschaulicht.
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
Dieser Code erzeugt die folgende Ausgabe:
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
Plattformen
Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile für Pocket PC, Windows Mobile für Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.
Versionsinformationen
.NET Framework
Unterstützt in: 2.0, 1.1, 1.0
.NET Compact Framework
Unterstützt in: 2.0, 1.0