title: In C#, why can't a List<string> object be stored in a List<object> variable
body: <p>It seems that a List object cannot be stored in a List variable in C#, and can't even be explicitly cast that way.</p>
  
  <pre><code>List&lt;string&gt; sl = new List&lt;string&gt;();
  List&lt;object&gt; ol;
  ol = sl;
  </code></pre>
  
  <p>results in Cannot implicitly convert type <code>System.Collections.Generic.List&lt;string&gt;</code> to <code>System.Collections.Generic.List&lt;object&gt;</code></p>
  
  <p>And then...</p>
  
  <pre><code>List&lt;string&gt; sl = new List&lt;string&gt;();
  List&lt;object&gt; ol;
  ol = (List&lt;object&gt;)sl;
  </code></pre>
  
  <p>results in Cannot convert type <code>System.Collections.Generic.List&lt;string&gt;</code> to <code>System.Collections.Generic.List&lt;object&gt;</code></p>
  
  <p>Of course, you can do it by pulling everything out of the string list and putting it back in one at a time, but it is a rather convoluted solution.</p>