Was this page helpful?
Your feedback about this content is important. Let us know what you think.
Additional feedback?
1500 characters remaining
IsAbstract Property

Type.IsAbstract Property

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

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

public bool IsAbstract { get; }

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.

using System;

public abstract class AbstractClass

public class DerivedClass : AbstractClass

public sealed class SingleClass

public interface ITypeInfo
   string GetName();

public class ImplementingClass : ITypeInfo
   public string GetName()
      return this.GetType().FullName;

delegate string InputOutput(string inp);

public class Example
   public static void Main()
      Type[] types= { typeof(AbstractClass),
                      typeof(InputOutput) };
      foreach (var type in types)
         Console.WriteLine("{0} is abstract: {1}",
                           type.Name, type.IsAbstract);

// 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

Supported in: 4.6, 4.5, 4, 3.5, 3.0, 2.0, 1.1

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

XNA Framework

Supported in: 3.0, 2.0, 1.0

.NET for Windows Phone apps

Supported in: Windows Phone 8.1, Windows Phone Silverlight 8.1, Windows Phone Silverlight 8

Portable Class Library

Supported in: Portable Class Library
© 2015 Microsoft