Export (0) Print
Expand All

17.4.3 The Obsolete attribute

Visual Studio .NET 2003

The attribute Obsolete is used to mark types and members of types that should no longer be used.

namespace System
{
   [AttributeUsage(
      AttributeTargets.Class | 
      AttributeTargets.Struct |
       AttributeTargets.Enum | 
      AttributeTargets.Interface | 
      AttributeTargets.Delegate |
      AttributeTargets.Method | 
      AttributeTargets.Constructor |
      AttributeTargets.Property | 
      AttributeTargets.Field |
      AttributeTargets.Event,
      Inherited = false)
   ]
   public class ObsoleteAttribute: Attribute
   {
      public ObsoleteAttribute() {...}
      public ObsoleteAttribute(string message) {...}
      public ObsoleteAttribute(string message, bool error) {...}
      public string Message { get {...} }
      public bool IsError { get {...} }
   }
}

If a program uses a type or member that is decorated with the Obsolete attribute, the compiler issues a warning or an error. Specifically, the compiler issues a warning if no error parameter is provided, or if the error parameter is provided and has the value false. The compiler issues an error if the error parameter is specified and has the value true.

In the example

[Obsolete("This class is obsolete; use class B instead")]
class A
{
   public void F() {}
}
class B
{
   public void F() {}
}
class Test
{
   static void Main() {
      A a = new A();       // Warning
      a.F();
   }
}

the class A is decorated with the Obsolete attribute. Each use of A in Main results in a warning that includes the specified message, "This class is obsolete; use class B instead."

Show:
© 2014 Microsoft