title: 2 different variables poiting to 1 address
body: <p>I am not that great programmer, but I am trying to make custom Minecraft launcher with C#. Soo I have a class for loading and saving options - works great - but now I have a problem that 2 variables in 1 class are somehow poiting to 1 address. I can choose from 3 different packs, each has individual options. I can load and save RAM, Debug mode, version picking mode and a custom version. But the MODE and VERSION are poiting to the same address, so if I change one, the other changes too, but don't know why, can you help me, please?</p>
  
  <p>What happens when saving options</p>
  
  <pre><code>        //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();
  </code></pre>
  
  <p>ObjOptions class</p>
  
  <pre><code>[Serializable]
  class ObjOptions
  {
      public List&lt;int&gt; version;
      public List&lt;int&gt; mode;
      public List&lt;int&gt; memory;
      public List&lt;bool&gt; debug;
      public ObjOptions(List&lt;int&gt; version, List&lt;int&gt; mode, List&lt;int&gt; memory, List&lt;bool&gt; debug)
      {
          this.version = version;
          this.mode = mode;
          this.memory = memory;
          this.debug = debug;
      }
      public ObjOptions()
      {
          List&lt;int&gt; l1 = new List&lt;int&gt;();
          for (int i = 0; i &lt; 3; i++)
              l1.Add(0);
          List&lt;int&gt; l2 = new List&lt;int&gt;();
          for (int i = 0; i &lt; 3; i++)
              l2.Add(0);
          List&lt;int&gt; l3 = new List&lt;int&gt;();
          for (int i = 0; i &lt; 3; i++)
              l3.Add(1024);
          List&lt;bool&gt; l4 = new List&lt;bool&gt;();
          for (int i = 0; i &lt; 3; i++)
              l4.Add(false);
          this.version = l1;
          this.mode = l2;
          this.memory = l3;
          this.debug = l4;
      }
  }
  </code></pre>
  
  <p>If you find anything that feels like it can be done better, but serves the same way, do not tell it to me. I just want to know why <strong>opt.mode</strong> and <strong>opt.version</strong> are linked together</p>