此代码无法与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并获得该错误):

10-02 02:59