gpt4 book ai didi

c# - 如何导致使用过时的方法编译失败

转载 作者:太空宇宙 更新时间:2023-11-03 10:31:48 25 4
gpt4 key购买 nike

我想将一个方法标记为过时,如果从任何地方调用它也会导致编译失败。

我在这里遇到了一个解决方案 How do I mark a method as Obsolete/Deprecated? .

一个答案暗示了这种语法,说 bool 修饰符将达到我想要的效果(编译失败)

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

但是,虽然这适用于同一个项目;当从另一个项目调用方法时它没有(我什至有 visual studio productivity power tools 显示错误但编译仍然成功)

这是故意的吗?或者有解决方法吗?

最佳答案

如果您在同样标记为过时的方法或类中使用标记为过时的内容,编译器将不会给您任何警告或错误。

考虑一些类中的以下过时方法:

public class SomeClass
{
[Obsolete("Don't use",true)]
public static void ObsoleteMethod() { }
}

预期的行为是无论何时使用它都会产生编译器错误。

但是如果你在另一个过时的方法中使用它,你甚至不会得到编译器警告。

public class AnotherClass
{
public void Method()
{
SomeClass.ObsoleteMethod(); // Compiler error
}

[Obsolete("Avoid use",false)]
public void AnotherObsoleteMethod()
{
SomeClass.ObsoleteMethod(); // No error and no warning
}
}

如果整个类都被标记为过时,情况也是如此:

[Obsolete()]
public class ObsoleteClass
{
public void Method()
{
SomeClass.ObsoleteMethod(); // No error
}
}

关于c# - 如何导致使用过时的方法编译失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29843459/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com