静态成员不存在于const func <t,t> </t,t>中

时间:2014-11-03 17:42:01

标签: c# function static

这可能是一个非常明显的逻辑问题,但我似乎无法理解为什么静态成员Char.ToUpper(char)应该不再存在于下面的代码中。

    private const Func<Enum, string> getString = vdEnum =>
    {
        var str = vdEnum.ToString().ToLower().ToCharArray();
        str[0] = Char.ToUpper(str[0]);
        return new string(str);
    };

我的代码功能齐全,如果我将此func声明为类的“静态只读”成员,那么我会非常感谢const的解释,这将有助于我理解为什么上面的代码不能在VS中编译2013年因为错误:

  

“无法解析符号'ToUpper'

然而,当我将此函数更改为“静态只读”时,它编译得很好吗?

提前感谢您提供的任何帮助。

1 个答案:

答案 0 :(得分:3)

只能为const分配编译时文字。您没有分配编译时文字,因此没有机会工作。人们希望得到一个不同的错误信息,但在这种情况下,您提供的代码远远超出了编译器所期望的那样,您不会收到很好的错误消息。正如您已经指出的那样,解决方案是不在此使用const,而是将其设为只读字段。