Type.IsInstanceOfType(Object) Method
Definition
Important
Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
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).