In C# creating a list of class instances is way simpler then that. You initialize the list with a class or value it's going to store and then add the instances or values.
For instance a list of MyClass instances would be something like this:
List<MyClass> myList = new List<MyClass>();
MyClass myClass1 = new MyClass;
myList.Add(myClass1);
Or for an int:
List<int> myList = new List<int>();
myList.Add(123);
And that's it. No need for pointers to store instances of a class.
Edit
There is no possibility in C# to have a pointer to a reference type or to a struct type that contains a reference. It is because the garbage collector can collect a reference type even when a pointer points to it. This topic is described in more detail on MSDN Pointer types article. So C# does not allow anything like MyClass*.
Also, in the same article, you can find that the only allowed pointer types are: sbyte, byte, short, ushort, int, uint, long, ulong, char, float, double, decimal, or bool.
As to your question about int* as a type argument in List<int*> the documentation says pointer types cannot be used as type arguments. See chapter 18.4.1 for more details.