'$'不用于插值的字符串前缀均值
本文关键字:前缀 字符串 用于 插值 | 更新日期: 2023-09-27 18:12:13
我刚刚在一篇关于。net Core配置的文章中看到这段代码,字典键对我来说很陌生:
static IReadOnlyDictionary<string, string> DefaultConfigurationStrings{get;} = new Dictionary<string, string>()
{
["Profile:UserName"] = Environment.UserName,
[$"AppConfiguration:ConnectionString"] = DefaultConnectionString,
[$"AppConfiguration:MainWindow:Height"] = "400",
[$"AppConfiguration:MainWindow:Width"] = "600",
[$"AppConfiguration:MainWindow:Top"] = "0",
[$"AppConfiguration:MainWindow:Left"] = "0",
};
为什么是$
,为什么是[...]
?不使用逗号分隔的键值对?
括号是新的索引初始化器。这只是初始化字典的另一种方式,比之前的集合初始化器更具可读性。
对于字符串,当不使用插值时,它只是一个简单的字符串,仅此而已。大概编译器甚至不会为这样的字符串生成string.Format
调用。您也可以删除$
(当不使用任何不同的特性时,这与逐字字符串字面量相同)。
$""
字符串的一个可能的原因是,它暗示了源代码预处理器或静态分析工具,字符串在某种程度上是特殊的。我曾见过类似的方法,用于逐字字符串字面量,以防止ReSharper建议为i18n翻译字符串。但是,这是您在构建环境中要寻找的东西。