'$'不用于插值的字符串前缀均值

本文关键字:前缀 字符串 用于 插值 | 更新日期: 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翻译字符串。但是,这是您在构建环境中要寻找的东西。