title: ForEach will not alter/change items in list C#
body: <p>I'm pretty sure this has worked before in some code I have written, not sure what I am missing here.</p>
  
  <p>The following code does not change the <code>string</code> values in my list. Why?</p>
  
  <pre><code>var items = listBox1.Items.Cast&lt;string&gt;().ToList();
  items.ForEach(item =&gt; item = (!chkBox1.Checked) ? "move " + item : "move -check " + item);
  </code></pre>
  
  <p><strong>EDIT</strong> : Just to clarify, the list remains the same as when it was created.</p>
  
  <p><strong>EDIT</strong> : Apologies, the items list (listBox1.Items) contains alphanumeric strings as follows.</p>
  
  <p><code>J00123456</code></p>
  
  <p><code>J00123344</code></p>
  
  <p><code>J00123458</code></p>
  
  <p>Also, just to confirm, I have successfully done this with a custom list of T (shown below), which is why I thought it would work here.</p>
  
  <pre><code>var tapes = new List&lt;TapeInfo&gt;();
  ... //Populated list
  tapes.ForEach(x =&gt; x.vItem = "tapelib 3592 -eject " + x.vItem);  //Works here
  </code></pre>