C# 静态IReadOnlyDictionary字段是否线程安全?

C# 静态IReadOnlyDictionary字段是否线程安全?,c#,.net,data-structures,thread-safety,C#,.net,Data Structures,Thread Safety,编写以下代码安全吗 private static readonly IReadOnlyDictionary<string, string> Map = new Dictionary<string, string> { ["A"] = "AAA", ["B"] = "BBB", ["C"] = "CCC" }; private static readonly IReadOnlyDictionary Map=新字典 { [“A”]=“AAA”, [“

编写以下代码安全吗

private static readonly IReadOnlyDictionary<string, string> Map = new Dictionary<string, string>
{
    ["A"] = "AAA",
    ["B"] = "BBB",
    ["C"] = "CCC"
};
private static readonly IReadOnlyDictionary Map=新字典
{
[“A”]=“AAA”,
[“B”]=“BBB”,
[“C”]=“CCC”
};

我知道并发字典是实现字典线程安全的标准方法。但由于我所需要的只是一个我从未打算修改的“常量”映射,初始化一个只读的IReadOnlyDictionary静态字段是否100%安全?

对于线程安全来说,重要的是对象的实际类型(字典),而不是变量的类型(IReadOnlyDictionary)

根据报告:

只要不修改集合,
词典
可以同时支持多个读取器

因此,您的代码很好——当然,假设没有人将您的变量转换回字典并修改它。如果你担心这种可能性,那就把你的字典放在一个盒子里