不知道這里發生了什么。當我將資料更新到第二個條目時,我存盤在第一個字典條目中的資料項會被覆寫。字典的第一個條目就像它使用對原始物件的參考一樣,所以當我更改它時,字典中的所有實體都會更改。第一組資料是 1,2,3 并存盤在 partitionInfo[0] 中。當我要存盤下一組資料時,4,5,6 partitionInfo[1] 會更新,但 parttionInfo[0] 也會更新這些值。所以我最終得到我的兩個字典條目具有相同的資料集。但是字串保持唯一。我所看到的表示代碼
private void button1_Click(object sender, EventArgs e)
{
Datum dataItems = new Datum();
Partition partitionItem = new Partition();
LRU lruItem = new LRU();
dataItems.minData = "1";
dataItems.maxData = "2";
dataItems.avgData = "3";
partitionItem.partitionInfo.Add("Entry1", dataItems);
dataItems.minData = "4";
dataItems.maxData = "5";
dataItems.avgData = "6";
partitionItem.partitionInfo.Add("Entry2", dataItems);
lruItem.lruInfo.Add("Parent", partitionItem);
}
public class LRU
{
public Dictionary<string, Partition> lruInfo = new Dictionary<string, Partition>();
}
public class Partition
{
public Dictionary<string, Datum> partitionInfo = new Dictionary<string, Datum>();
}
public class Datum
{
public string minData;
public string maxData;
public string avgData;
}
uj5u.com熱心網友回復:
您正在覆寫以該行開頭的值dataItems.minData = "4";僅僅因為您已將值存盤在Entry1其中并不會像我懷疑的那樣“將其鎖定”。
你原來的評論:
字典的第一個條目就像使用對原始物件的參考一樣,所以當我更改它時,字典中的所有實體都會更改
您即將掌握代碼中的錯誤...
查看固定代碼:
Partition partitionItem = new Partition();
Datum dataItems = new Datum();
// **** It's better to declare your variables just
// before you use them to make it clearer ****
dataItems.minData = "1";
dataItems.maxData = "2";
dataItems.avgData = "3";
partitionItem.partitionInfo.Add("Entry1", dataItems);
dataItems = new Datum(); // **** ADDED LINE ****
// We now have a new block of memory containing a `Datum`
// the one above is left untouched
dataItems.minData = "4";
dataItems.maxData = "5";
dataItems.avgData = "6";
partitionItem.partitionInfo.Add("Entry2", dataItems);
LRU lruItem = new LRU(); **** Moved, as before ****
lruItem.lruInfo.Add("Parent", partitionItem);
uj5u.com熱心網友回復:
我正在嘗試這樣做,因為我需要能夠讓串列即時增長和縮小。所以我無法重新創建實體,因為我不知道需要多少次。回到繪圖板。感謝您的幫助!!
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/477308.html
上一篇:xpath如何在孩子的數量并不總是相同的情況下獲取第一級孩子的最后一個值
下一篇:根據字典向資料框添加列
