在switch语句中使用对象的字符串变量

时间:2012-05-21 18:10:10

标签: c#

我正在试图找出我收到此错误的原因:

    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直到运行时才被分配?

1 个答案:

答案 0 :(得分:3)

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