静态成员不';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’
然而,当我把这个函数改为"静态只读"时,它编译得很好吗?
提前感谢您提供的任何帮助。
const
只能分配一个编译时文字。您没有分配编译时的文字,所以这不可能奏效。人们可能希望得到不同的错误消息,但在这种情况下,您提供的代码与编译器预期的相去甚远,因此您不会得到好的错误消息。正如您已经注意到的,解决方案是在这里不使用const
,而是将其作为只读字段。