微软是否改变了C#编译器在枚举上处理plus-operator的方式? VS 2015.3

时间:2016-06-28 15:50:34

标签: c# enums visual-studio-2015

在将Visual Studio 2015升级到Update 3之前,这样的事情曾经发挥作用。

C#5

考虑我们有一些枚举(其中int是基础类型)和表达式

intVal + enumVal

plus operator的结果似乎具有enumVal的类型。

这里有详细描述:S.O. answer

幸运的是,它继续发挥作用。

此类调用过去也起作用:

(int?)intVal + enumVal

它将Nullable<type_of_enumVal>作为结果类型。

幸运的是,它继续发挥作用。

如果我们将第一个arg更改为可以转换为CustomType的某个int?(一个结构,而不是枚举),那么它以前也可以工作:

(CustomType)intVal + enumVal

提供Nullable<type_of_enumVal>作为结果类型。

使用Visual Studio 2015 Update 3,它会给编译器错误。

是不是没有记录的东西显然已经脱离了规则/规范?

P.S。出于好奇,我知道这种类型的params等运算符应用是不好的做法。

0 个答案:

没有答案