Редагувати

Поділитися через


Type.IsInstanceOfType(Object) Method

Definition

Determines whether the specified object is an instance of the current Type.

public:
 virtual bool IsInstanceOfType(System::Object ^ o);
public virtual bool IsInstanceOfType (object? o);
public virtual bool IsInstanceOfType (object o);
abstract member IsInstanceOfType : obj -> bool
override this.IsInstanceOfType : obj -> bool
Public Overridable Function IsInstanceOfType (o As Object) As Boolean

Parameters

o
Object

The object to compare with the current type.

Returns

true if the current Type is in the inheritance hierarchy of the object represented by o, or if the current Type is an interface that o implements. false if neither of these conditions is the case, if o is null, or if the current Type is an open generic type (that is, ContainsGenericParameters returns true).

Implements

Examples

The following example demonstrates the use of the IsInstanceOfType method.

using namespace System;

public interface class IExample{};

public ref class BaseClass: IExample{};

public ref class DerivedClass: BaseClass{};

void main()
{
   Type^ interfaceType = IExample::typeid;
   BaseClass^ base1 = gcnew BaseClass;
   Type^ base1Type = base1->GetType();
   BaseClass^ derived1 = gcnew DerivedClass;
   Type^ derived1Type = derived1->GetType();
   array<Int32>^ arr = gcnew array<Int32>(11);
   Type^ arrayType = Array::typeid;

   Console::WriteLine("Is Int32[] an instance of the Array class? {0}.",
                      arrayType->IsInstanceOfType( arr ) );
   Console::WriteLine("Is myclass an instance of BaseClass? {0}.",
                      base1Type->IsInstanceOfType( base1 ) );
   Console::WriteLine("Is myderivedclass an instance of BaseClass? {0}.",
                      base1Type->IsInstanceOfType( derived1 ) );
   Console::WriteLine("Is myclass an instance of IExample? {0}.",
                      interfaceType->IsInstanceOfType( base1 ) );
   Console::WriteLine("Is myderivedclass an instance of IExample? {0}.",
                      interfaceType->IsInstanceOfType( derived1 ) );
}
// The example displays the following output:
//    Is int[] an instance of the Array class? True.
//    Is base1 an instance of BaseClass? True.
//    Is derived1 an instance of BaseClass? True.
//    Is base1 an instance of IExample? True.
//    Is derived1 an instance of IExample? True.
using System;

public interface IExample {}

public class BaseClass : IExample {}

public class DerivedClass : BaseClass {}

public class Example
{
    public static void Main()
    {
        var interfaceType = typeof(IExample);
        var base1 = new BaseClass();
        var base1Type = base1.GetType();
        var derived1 = new DerivedClass();
        var derived1Type = derived1.GetType();
        int[] arr = new int[11];

        Console.WriteLine("Is int[] an instance of the Array class? {0}.",
                           typeof(Array).IsInstanceOfType(arr));
        Console.WriteLine("Is base1 an instance of BaseClass? {0}.",
                          base1Type.IsInstanceOfType(base1));
        Console.WriteLine("Is derived1 an instance of BaseClass? {0}.",
                          base1Type.IsInstanceOfType(derived1));
        Console.WriteLine("Is base1 an instance of IExample? {0}.",
                          interfaceType.IsInstanceOfType(base1));
        Console.WriteLine("Is derived1 an instance of IExample? {0}.",
                          interfaceType.IsInstanceOfType(derived1));
    }
}
// The example displays the following output:
//    Is int[] an instance of the Array class? True.
//    Is base1 an instance of BaseClass? True.
//    Is derived1 an instance of BaseClass? True.
//    Is base1 an instance of IExample? True.
//    Is derived1 an instance of IExample? True.
open System

type IExample = interface end

type BaseClass() = interface IExample

type DerivedClass() = inherit BaseClass()

let interfaceType = typeof<IExample>
let base1 = BaseClass()
let base1Type = base1.GetType()
let derived1 = DerivedClass()
let derived1Type = derived1.GetType()
let arr = Array.zeroCreate<int> 11

printfn $"Is int[] an instance of the Array class? {typeof<Array>.IsInstanceOfType arr}."
printfn $"Is base1 an instance of BaseClass? {base1Type.IsInstanceOfType base1}."
printfn $"Is derived1 an instance of BaseClass? {base1Type.IsInstanceOfType derived1}."
printfn $"Is base1 an instance of IExample? {interfaceType.IsInstanceOfType base1}."
printfn $"Is derived1 an instance of IExample? {interfaceType.IsInstanceOfType derived1}."
// The example displays the following output:
//    Is int[] an instance of the Array class? True.
//    Is base1 an instance of BaseClass? True.
//    Is derived1 an instance of BaseClass? True.
//    Is base1 an instance of IExample? True.
//    Is derived1 an instance of IExample? True.
Public Interface IExample
End Interface

Public Class BaseClass : Implements IExample
End Class

Public Class DerivedClass : Inherits BaseClass
End Class

Public Module Example
    Public Sub Main()
        Dim interfaceType As Type = GetType(IExample)
        Dim base1 As New BaseClass()
        Dim base1Type As Type = base1.GetType()
        Dim derived1 = New DerivedClass()
        Dim derived1Type As Type = derived1.GetType()
        Dim arr(10) As Integer

        Console.WriteLine("Is int[] an instance of the Array class? {0}.",
                           GetType(Array).IsInstanceOfType(arr))
        Console.WriteLine("Is base1 an instance of BaseClass? {0}.",
                          base1Type.IsInstanceOfType(base1))
        Console.WriteLine("Is derived1 an instance of BaseClass? {0}.",
                          base1Type.IsInstanceOfType(derived1))
        Console.WriteLine("Is base1 an instance of IExample? {0}.",
                          interfaceType.IsInstanceOfType(base1))
        Console.WriteLine("Is derived1 an instance of IExample? {0}.",
                          interfaceType.IsInstanceOfType(derived1))
    End Sub
End Module
' The example displays the following output:
'    Is int[] an instance of the Array class? True.
'    Is base1 an instance of BaseClass? True.
'    Is derived1 an instance of BaseClass? True.
'    Is base1 an instance of IExample? True.
'    Is derived1 an instance of IExample? True.

Remarks

This method can be overridden by a derived class.

Note

A constructed type is not an instance of its generic type definition. That is, MyGenericList<int> (MyGenericList(Of Integer) in Visual Basic) is not an instance of MyGenericList<T> (MyGenericList(Of T) in Visual Basic).

Applies to