关于C#:如何将方法标记为已过时或已弃用?

How to mark a method as obsolete or deprecated?

如何使用c_将方法标记为已过时或已弃用?


最短的方法是将ObsoleteAttribute作为属性添加到方法中。确保包括适当的解释:

1
2
3
[Obsolete("Method1 is deprecated, please use Method2 instead.")]
public void Method1()
{}

如果从以下代码中的某个位置调用方法,则还可以导致编译失败,将方法的使用视为错误而不是警告:

1
[Obsolete("Method1 is deprecated, please use Method2 instead.", true)]


标记为已过时并带有警告:

1
2
[Obsolete]
private static void SomeMethod()

使用时会收到警告:

Obsolete warning is shown

以及智能感知:

Obsolete warning with IntelliSense

如果您需要消息:

1
2
[Obsolete("My message")]
private static void SomeMethod()

以下是IntelliSense工具提示:

IntelliSense shows the obsolete message

最后,如果希望将用法标记为错误:

1
2
[Obsolete("My message", true)]
private static void SomeMethod()

当使用时,这就是你得到的:

Method usage is displayed as an error

注意:使用消息告诉人们应该使用什么,而不是为什么它是过时的。


使用关键字Obsolete向方法添加注释。message参数是可选的,但它是一个很好的主意,可以说明为什么现在该项已过时和/或使用什么。例子:

1
2
[System.Obsolete("use myMethodB instead")]
void myMethodA()

使用ObsoleteAttribute可以显示不推荐使用的方法。过时的属性有三个构造函数:

  • [Obsolete]: is a no parameter constructor and is a default using this attribute.
  • [Obsolete(string message)]: in this format you can get message of why this method is deprecated.
  • [Obsolete(string message, bool error)]: in this format message is very explicit but error means, in compilation time, compiler must be showing error and cause to fail compiling or not.
  • enter image description here