不能修改字典值
本文关键字:字典 修改 不能 | 更新日期: 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;
}