我不是那麼棒的程序員,但我想用C#製作自定義的Minecraft啓動器。所以我有一個加載和保存選項的類 - 效果很好 - 但現在我有一個問題,一個類中的2個變量以某種方式偏向1個地址。我可以選擇3種不同的包裝,每種包裝都有不同的選擇。我可以加載和保存RAM,調試模式,版本選擇模式和自定義版本。但是模式和版本正在向同一地址傾斜,所以如果我改變一個,另一個也改變,但不知道爲什麼,請你幫助我?2個不同的變量poiting到1個地址
保存選項
//Setting stream to beggining
optstr.Position = 0;
//Loading options file from the disc
opt = formatter.Deserialize(optstr) as ObjOptions;
//Setting version
opt.version[modpack] = comboBox1.SelectedIndex;
//Setting mode
if (radioButton1.Checked) opt.mode[modpack] = 0;
else if (radioButton2.Checked) opt.mode[modpack] = 1;
else opt.mode[modpack] = 2;
//Setting debug
opt.debug[modpack] = debug.Checked;
//Setting memory
opt.memory[modpack] = Convert.ToInt16(ram.Text);
//Setting stream position
optstr.Position = 0;
//Writing to file
formatter.Serialize(optstr, opt);
//Closing options window
this.Dispose();
ObjOptions上課的時候會發生什麼
[Serializable]
class ObjOptions
{
public List<int> version;
public List<int> mode;
public List<int> memory;
public List<bool> debug;
public ObjOptions(List<int> version, List<int> mode, List<int> memory, List<bool> debug)
{
this.version = version;
this.mode = mode;
this.memory = memory;
this.debug = debug;
}
public ObjOptions()
{
List<int> l1 = new List<int>();
for (int i = 0; i < 3; i++)
l1.Add(0);
List<int> l2 = new List<int>();
for (int i = 0; i < 3; i++)
l2.Add(0);
List<int> l3 = new List<int>();
for (int i = 0; i < 3; i++)
l3.Add(1024);
List<bool> l4 = new List<bool>();
for (int i = 0; i < 3; i++)
l4.Add(false);
this.version = l1;
this.mode = l2;
this.memory = l3;
this.debug = l4;
}
}
如果您發現任何感覺就像是可以做的更好,但有異曲同工之路,不要告訴我。我只是想知道爲什麼opt.mode和opt.version連在了一起
仍然無法正常工作。我強硬的問題將得到解決,就像你可以看到那裏(編輯我的帖子),仍然無法正常工作。即使我這樣做,就像舊的或像**新名單(l1); **等等 –
DragonCz
@DragonCz你是否反序列化你使用破解代碼序列化的實例?如果是這樣,那些序列化的實例會被它們構建的錯誤代碼破壞。刪除它們並重新開始。 – cdhowie
非常感謝你,我很不知道,因爲我正在重做代碼一百萬次!問題解決了,謝謝 – DragonCz