title: Items in static List<Item>()
body: <p>So I have a static item list which stores a few classes, and in those classes are variables such as "int ID", "string name", "string description", "int currentAmount", etc.</p>
  
  <pre><code>ItemDatabase.cs...
  
  public static List&lt;Item&gt; Items
  
  static void LoadItemData()
  {
      Items.Add(new item);
      ...
  }
  </code></pre>
  
  <p>I then have a separate item list which will have items added to it for use by the player.</p>
  
  <pre><code>Player.cs...
  
  List&lt;Item&gt; playerItems;
  </code></pre>
  
  <p>Then in other classes, I have <code>AddItem(int ID)</code> methods:</p>
  
  <pre><code>void AddItem(int id)
  {
      foreach (Item i in ItemDatabase.Items)
          if (i.ID == id)
              playerItems.Add(i);
  }
  </code></pre>
  
  <p>I'm currently adding in entities that will make use of the same data. But when I modify the Item added to the playerItems, it modifies ItemDatabase.Items (Obviously, due to referencing).</p>
  
  <p><strong>I can't make the Item class into a struct, because I have other classes which derive from it.
  I need the "currentAmount" integer to be by value. Is there any way I can do this?</strong></p>
  
  <p>P.S., I've tried deep cloning, and that doesn't play nicely with my Item class.</p>