---
# System prepended metadata

title: 新舊程式並存過渡期，怎麼提醒大家不要用舊版程式? ObsoleteAttribute
tags: [程式設計]

---

# 新舊程式並存過渡期，怎麼提醒大家不要用舊版程式? ObsoleteAttribute
###### tags: `程式設計` 

## 情境
如同標題，原本可能寫了一個 string A1()，改版後變成 string A2()，雖然A1沒有壞，但是功能比較少，希望大家改用A2，這時候該怎麼做好呢?

```=C#
public static string A1()
{
   return "這是舊的";
}
public static string A2()
{
   return "這是新的";
}

```


發email、line之類的通知當然是一種作法，但如果程式是在外部流傳，可能也不知道聯絡方式，這時候可以利用 Obsolete 這個屬性，這樣雖然程式還可以用，但是底下會跳出黃色的警告 warning 訊息或紅色的 error，提醒開發者要更換


## 解決方式 [ObsoleteAttribute]


微軟官方提供了三種用法

1. 直接寫 [ObsoleteAttribute]
這個方式會直接讓visual studio的錯誤清單上顯示warning 此方法已過時
3. [ObsoleteAttribute("字串")]
這個方式會直接讓visual studio的錯誤清單上顯示warning 此方法已過時，以及想要顯示的自訂文字 
5. [ObsoleteAttribute("字串", true)]
這個方式會直接讓visual studio的錯誤清單上顯示error 此方法已過時，以及想要顯示的自訂文字 

## 完整範例

[ObsoleteAttribute("This method is obsolete. Call CallNewMethod instead.", true)]
```=C#
[ObsoleteAttribute("請改用A2", true)]
public static string A1()
{
   return "這是舊的";
}
public static string A2()
{
   return "這是新的";
}
```

## 參考文件
ObsoleteAttribute 類別
https://docs.microsoft.com/zh-tw/dotnet/api/system.obsoleteattribute?view=net-5.0