无法修改字典值

时间:2013-05-15 01:33:19

标签: c# dictionary

我一直在使用这段代码来尝试修改一些可以写入文件的数据,但无论我做什么,即使直接指定空字节,它也不会改变。我试图从单独的类访问字典条目而不是它生成的类。

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];

1 个答案:

答案 0 :(得分:0)

字典不是只读的。

您正在将字节写入字典而不是字典中的值内的Data属性。

如果你真的想要覆盖字典条目,请使用 -

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