静态成员不';t存在于const func<;T、 T>;

本文关键字:func lt gt const 存在 静态成员 | 更新日期: 2023-09-27 18:28:58

这可能是一个非常明显的逻辑问题,但我似乎无法理解为什么静态成员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);
    };

如果我将这个函数声明为类的"静态只读"成员,我的代码是完全功能性的,并且运行良好。但是,我非常感谢对const的解释,这将帮助我理解为什么由于以下错误,上面的代码不应该在VS2013中编译:

"无法解析符号‘ToUpper’

然而,当我把这个函数改为"静态只读"时,它编译得很好吗?

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

静态成员不';t存在于const func<;T、 T>;

const只能分配一个编译时文字。您没有分配编译时的文字,所以这不可能奏效。人们可能希望得到不同的错误消息,但在这种情况下,您提供的代码与编译器预期的相去甚远,因此您不会得到好的错误消息。正如您已经注意到的,解决方案是在这里不使用const,而是将其作为只读字段。