You cannot cast between generic types with different type parameters. Specialized generic types don't form part of the same inheritance tree and so are unrelated types.
To do this pre-NET 3.5:
List sl = new List();
// Add strings to sl
List
Using Linq:
var sl = new List();
// Add strings to sl
var ol = new List(sl.Cast());
// OR
var ol = sl.Cast().ToList();
// OR (note that the cast to object here is required)
var ol = sl.Select(s => (object)s).ToList();