You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么在C#中无法对两个枚举类型变量执行加法操作?

C#枚举加法的编译行为差异

首先定义一个枚举类型:

enum MyEnumeration
{
    E1,
    E2 = 10,
    E3
}

MyEnumeration myEnum = MyEnumeration.E1;

按照C#规范描述,允许对两个枚举类型变量执行加法操作,但以下代码无法编译:

myEnum = myEnum + myEnum;

与之相对,下面两段代码却能正常编译:

myEnum++;
myEnum = myEnum + 20;

原因解析

  • 当两个枚举值相加时,编译器会将结果解析为枚举的基础数值类型(默认是int),而不是枚举类型本身。直接将数值类型赋值给枚举变量会触发编译错误,因为缺少显式类型转换。
  • myEnum++是枚举的自增操作,编译器会自动处理类型转换,将自增后的数值隐式转换回枚举类型,因此可以正常编译。
  • 枚举值与整数相加的结果同样是数值类型,但C#允许将数值类型隐式转换到枚举类型(只要数值落在枚举基础类型的范围内),所以myEnum = myEnum + 20可以通过编译。

如果要让两个枚举相加的代码编译通过,需要显式将结果转换回枚举类型:

myEnum = (MyEnumeration)(myEnum + myEnum);

内容的提问来源于stack exchange,提问作者Leo qiao

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 05:05:58