31

在 C# 枚举中,使用负数是否有任何负面影响?

我正在建模响应代码和否定代码之一。这可以编译,但我想知道这是否有任何负面影响。

public enum ResponseCodes
{
    InvalidServerUserPasswordCombo = -1,

    // etc.
}
4

4 回答 4

36

使用负数的负面影响

显然,对于任何底层的有符号类型,任何按位运算都会很快变得“有趣”。

但是使用枚举作为相关常量的集合可以非常愉快地使用负值。

于 2012-08-09T10:37:16.703 回答
13

没有负面影响,但是请记住,在这种情况下,枚举被初始化为零:

class YourClass {
    public ResponseCodes ResponseCode { get; set; }
}

只提供负值将对类的任何用户产生不良影响(除非他们初始化它。

于 2012-08-09T10:38:16.663 回答
4

这个答案晚了 7 年,但我在其他任何地方都没有看到这一点。

对枚举使用负数时会产生轻微的负面影响。如果要将负数转换为枚举,则需要确保数字在括号中以避免编译错误,例如:

class YourClass {
    ResponseCodes rc = (ResponseCodes)(-1);
}
于 2020-01-13T23:24:33.780 回答
3

不,枚举是一个整数类型的值,它可以是从 -2,147,483,648 到 2,147,483,647 的任何值!:)

于 2012-08-09T10:38:55.987 回答