Obsolete (C# 程式設計手冊)

更新:2007 年 11 月

Obsolete 屬性 (Attribute) 會標記不再建議使用的程式實體 (Entity)。每次使用標記為過時的實體時,會視設定此屬性的方法,產生警告或是錯誤。例如:

[System.Obsolete("use class B")]
class A
{
    public void Method() { }
}
class B
{
    [System.Obsolete("use NewMethod", true)]
    public void OldMethod()  { }
    public void NewMethod()  { }
}

在此範例中,Obsolete 屬性會套用至 A 類別和 B.OldMethod 方法。由於套用至 B.OldMethod 之屬性建構函式的第二個引數設定為 true,這個方法會產生編譯器錯誤,使用 A 類別則只會產生警告。然而,呼叫 B.NewMethod 則不會產生任何警告或錯誤。

提供為屬性建構函式第一個引數的字串,將會顯示為警告或錯誤的一部分。例如,在使用先前的定義時,下列程式碼會產生兩項警告和一項錯誤:

// Generates 2 warnings:
A a = new A();
// Generate no errors or warnings:
B b = new B();
b.NewMethod();
// Generates an error, terminating compilation:
b.OldMethod();

會對 A 類別產生兩項警告:一個針對類別參考的宣告,另一個則針對類別建構函式。

Obsolete 屬性不需要引數即可使用,不過建議的做法是包含該項目為何過時、以及應該改用什麼項目的解釋。

Obsolete 屬性是單一使用的屬性,而且可以套用至允許屬性的任何實體。Obsolete 是 ObsoleteAttribute 的別名 (Alias)。

請參閱

概念

C# 程式設計手冊

參考

反映 (C# 程式設計手冊)

屬性 (C# 程式設計手冊)

明示屬性目標 (C# 程式設計手冊)

建立自訂屬性 (C# 程式設計手冊)

使用反映存取屬性 (C# 程式設計手冊)

Attribute

System.Reflection