Type.IsAbstract Property


The .NET API Reference documentation has a new home. Visit the .NET API Browser on docs.microsoft.com to see the new experience.

Gets a value indicating whether the Type is abstract and must be overridden.

Namespace:   System
Assembly:  mscorlib (in mscorlib.dll)

Public ReadOnly Property IsAbstract As Boolean

Property Value

Type: System.Boolean

true if the Type is abstract; otherwise, false.

The IsAbstract property returns true in the following cases:

  • The current type is abstract; that is, it cannot be instantiated, but can only serve as the base class for derived classes. In C#, abstract classes are marked with the abstract (C# Reference) keyword; in Visual Basic, they are marked with the MustInherit (Visual Basic) keyword.

  • The current type is an interface.

If the current Type represents a type parameter in the definition of a generic type or generic method, this property always returns false.

The following example creates an array of Type objects that represent the following types:contains type returns true if the specified object is abstract; otherwise, it returns false.

  • AbstractClass, an abstract class (a class marked as abstract in C# and MustInherit in Visual Basic).

  • DerivedClass, a class that inherits from AbstractClass.

  • SingleClass, a non-inheritable class. It is defined as sealed in C# and NotInheritable in Visual Basic.

  • ITypeInfo, an interface.

  • ImplementingClass, a class that implements the ITypeInfo interface.

The method returns true only for AbstractClass, the abstract class, and ITypeInfo, the interface.

Public MustInherit Class AbstractClass
End Class

Public Class DerivedClass : Inherits AbstractClass
End Class

Public NotInheritable Class SingleClass
End Class

Public Interface ITypeInfo
   Function GetName() As String
End Interface

Public Class ImplementingClass : Implements ITypeInfo
   Public Function GetName() As String _
          Implements ITypeInfo.GetName
      Return Me.GetType().FullName
   End Function
End Class

Delegate Function InputOutput(inp As String) As String

Module Example
   Public Sub Main()
      Dim types() As Type = { GetType(AbstractClass),
                              GetType(InputOutput) }
      For Each type In types
         Console.WriteLine("{0} is abstract: {1}",
                           type.Name, type.IsAbstract)
   End Sub
End Module
' The example displays the following output:
'       AbstractClass is abstract: True
'       DerivedClass is abstract: False
'       ITypeInfo is abstract: True
'       SingleClass is abstract: False
'       ImplementingClass is abstract: False
'       InputOutput is abstract: False

.NET Framework
Available since 1.1
Portable Class Library
Supported in: portable .NET platforms
Available since 2.0
Windows Phone Silverlight
Available since 7.0
Return to top