不能修改字典值

本文关键字:字典 修改 不能 | 更新日期: 2023-09-27 18:13:50

我一直在使用这段代码来尝试修改一些将写入文件的数据,但无论我做什么,甚至直接为其分配空字节,它都不会改变。我正在尝试从一个单独的类访问字典条目,而不是从生成它的类访问。

Buffer.BlockCopy(
    pio.GetBuffer(), 
    0, 
    Wat.SettingEntryList[0x63E83FFF].Data, 
    0,     
    Wat.SettingEntryList[0x63E83FFF].Data.Length);
Buffer.BlockCopy(
    pio.GetBuffer(), 
    Wat.SettingEntryList[0x63E83FFF].Data.Length, 
    Wat.SettingEntryList[0x63E83FFE].Data, 
    0, 
    Wat.SettingEntryList[0x63E83FFE].Data.Length);

下面是类中的变量,以及我如何初始化字典:

public class SettingEntry
{
    public byte[] Data { get; set; }
}

- - -public Dictionary SettingEntryList = new Dictionary();

将数据写入文件时,我像这样遍历每个键:

foreach (KeyValuePair<int, SettingEntry> SE in SettingEntryList)
{
    pio.WriteBytes(SE.Value.Data);
}

我已经检查并调试过了。一旦我确定键存在,我就使用下面的代码,当我运行时,应用程序一直停留在循环中,直到我退出:

while (GPD.SettingEntryList[0x63E83FFF].Data != new byte[GPD.SettingEntryList[0x63E83FFF].Data.Length])
GPD.SettingEntryList[0x63E83FFF].Data = new byte[GPD.SettingEntryList[0x63E83FFF].Data.Length];

不能修改字典值

字典不是只读的

不是将字节写入字典,而是写入字典中值的Data属性。

如果你真的想重写一个字典条目,使用-

foreach (KeyValuePair<int, SettingEntry> entry in SettingEntryList)
{
    var val = new SettingsEntry() { Data = new DataType() };
    pio.WriteBytes(val.Data);
    entry.Value = val;
}