C#中枚举已被弃用

39

我有一个已经被弃用的函数,它返回一个枚举值,同时我还有一个新的函数,它返回一个枚举值列表。

其中一个枚举值仅在弃用函数中使用,那么是否可以将其设置为已弃用的枚举成员(因为它不能出现在枚举值列表中)?


2
你尝试过使用 ObsoleteAttribute 吗? - Cody Gray
2
需要看一些代码... - BoltClock
10
@BoltClock 为什么?我只是想将一个枚举标记为过时... - JohnJohnGa
3个回答

61

当然,你可以:

public enum EE
{
    A,

    [Obsolete]
    B
}

44

实际上,生成编译器警告或编译器错误都是可能的。

public enum TestEnum
{
    A,
    [Obsolete("Not in use anymore")]
    B,
    [Obsolete("Not in use anymore", true)]
    C,
}

public class Class1
{
    public void TestMethod()
    {
        TestEnum t1 = TestEnum.A; //Works just fine.
        TestEnum t2 = TestEnum.B; //Will still compile, but generates a warning.
        TestEnum t3 = TestEnum.C; //Will no longer compile. 
    }
}

只要在使用[Obsolete]属性的地方,这将起作用。


0
我尚未在枚举上尝试过这个,但类似下面的代码可能有效:
[Obsolete("Please use ... instead!")]
public enum MyEnum
{
  One,
  Two,
  Three
}

5
我建议你在发布猜测之前,留出几天或几周的时间等待真正的答案出现。实际上,为什么不先测试你的猜测呢?这样你就可以发布一个真正的答案,或者什么都不发表。 - Spike0xff
4
很明显,将“Obsolete”属性应用于整个“enum”与仅将其应用于单个值不同。看起来,OP想要排除特定的“enum”值。 - Phil1970

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接