title: Changing values of members inside a Generic List in C++/CLI
body: <p>Below is a simple C++/CLI example.</p>
  
  <pre><code>// TestCLR.cpp : main project file.
  
  #include "stdafx.h"
  
  using namespace System;
  
  int main(array&lt;System::String ^&gt; ^args)
  {
      System::Collections::Generic::List&lt;String^&gt; TestList;
  
      for(int i = 0; i &lt; 10 ; i++)
      {
          TestList.Add(i.ToString());
      }
  
      for each(String^% st in TestList)
      {
          st += "TEST";
          Console::WriteLine(st);
      }
  
      for each(String^ st in TestList)
      {
          Console::WriteLine(st);
      }
  
      return 0;
  }
  </code></pre>
  
  <p>I get the following output:</p>
  
  <pre><code>0TEST
  1TEST
  2TEST
  3TEST
  4TEST
  5TEST
  6TEST
  7TEST
  8TEST
  9TEST
  0
  1
  2
  3
  4
  5
  6
  7
  8
  9
  </code></pre>
  
  <p>In short, the values inside <strong>TestList</strong> do not change even though I am using a tracking pointer to change its value to "TEST".</p>
  
  <p>What should I modify in the above snippet so that the value is permanently changed?</p>