【发布时间】:2017-01-19 23:40:05
【问题描述】:
为什么 c# 中的字符串插值不适用于 const 字符串?例如:
private const string WEB_API_ROOT = "/private/WebApi/";
private const string WEB_API_PROJECT = $"{WEB_API_ROOT}project.json";
在我看来,一切都在编译时就知道了。还是以后会添加这个功能?
编译器消息:
分配给“DynamicWebApiBuilder.WEB_API_PROJECT”的表达式必须是常量。
非常感谢!
【问题讨论】:
-
内插字符串只是转换为
string.Format调用。 -
要解决方法,请将
const替换为static readonly -
@juharr:这并没有真正解释为什么编译器无法检查您传递的参数是否是另一个可用于初始化此常量的常量。允许使用串联的字符串文字。那么为什么不允许使用组合字符串文字,编译器可以使用相同的技术。
-
@TimSchmelter 这就是我要说的。感谢您指出!
-
当字符串被传递到像 SwaggerResponseAttribute 这样的编译时约束时,不能使用静态只读。试图将 Description 属性设置为嵌入常量的字符串,并且不能使用新的 $"" 格式,因为它不支持常量。跛脚。
标签: c# .net c#-6.0 string-interpolation