此代码无法与latest C# compiler一起编译:
public class Program
{
public static void Main()
{
IntEnum a = (IntEnum)-1;
}
}
public enum IntEnum : int { }
当您尝试编译它时,它会引发
奇怪的是,将强制转换值更改为正数(例如
4
),或者使用const值(例如int.MinValue
),或者甚至用(IntEnum)(-1)
这样的括号括起来,也可以正常工作。但是,上述示例没有。有什么理由吗? Roslyn可能错误地解析了代码,这就是为什么会引发错误?
最佳答案
行为是预期的并已记录在案,以使诸如(Var)-1
之类的表达式得以解析。
Compiler Error CS0075详细介绍了规范(我希望您会代替CS0119并获得该错误):