0

我试图弄清楚为什么会出现此错误:

    switch (token.type.GetName()) 
    {
        case PascalTokenType.BEGIN.name: // ERROR: A CONSTANT VALUE IS EXPECTED
        {
            CompoundStatementParser compoundParser = new CompoundStatementParser(this);
            statementNode = compoundParser.parse(token);
            break;
        }
    }

GetName()并且name都返回字符串。这是对象的样子:

    public static readonly PascalTokenType BEGIN = new PascalTokenType("BEGIN");

我知道我可以通过将其更改为if语句来解决此问题,但是当它完成后,我将至少有 20 个条件,所以我宁愿不这样做。我想这是因为BEGIN.name直到运行时才分配?

4

1 回答 1

3

是的,你有正确的想法。问题是这个值可能会在运行时发生变化,这是编译器不喜欢的。

于 2012-05-21T18:11:49.143 回答