在将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等运算符应用是不好的做法。