You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决替换Dictionary值时出现的CS0200只读属性错误?

问题解决方法

原代码错误分析

  1. 内层foreach遍历的键值对entry是只读迭代变量,无法直接修改其Value属性。
  2. 错误地将key.Value(类型为Dictionary<string, string>)赋值为字符串,类型不匹配,这也是触发CS0200错误的核心原因之一。

正确实现方式

方式一:修改原有内层字典的值

通过遍历内层字典的键(需转成列表避免集合修改异常),直接通过键更新对应值:

if (translationDictionary == null) return;

foreach (var outerEntry in translationDictionary)
{
    var innerDict = outerEntry.Value;
    // 转成List避免遍历原Keys集合时修改字典引发异常
    foreach (var innerKey in innerDict.Keys.ToList())
    {
        var replaceString = new string('*', innerDict[innerKey].Length);
        innerDict[innerKey] = replaceString;
    }
}

方式二:生成新内层字典替换原有

如果希望保留原内层字典不被修改,可以生成新的内层字典替换外层字典中的对应项:

if (translationDictionary == null) return;

foreach (var outerKey in translationDictionary.Keys.ToList())
{
    var originalInner = translationDictionary[outerKey];
    var newInner = originalInner.ToDictionary(
        kvp => kvp.Key,
        kvp => new string('*', kvp.Value.Length)
    );
    translationDictionary[outerKey] = newInner;
}

内容的提问来源于stack exchange,提问作者Patrick

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 07:05:34