Closed constructed type and open constructed type is term that is used while instantiated an object.
In above code class myClassO is the open constructed type as we can pass any type of parameter while instantiating the myClassO object.
myClassO<int> i = new myClassO<int>(20); // Correct
myClassO<string> i = new myClassO<strubg>('my string"); // Correct
You can notice that I can pass either integer or string in the myClassO insntiation as this is the generic class.
myClassC is the closed constructed type as I have specified the type of argument to be passed in the myClassC instantiation.
myClassC<int> i = new myClassC<int>(20); // Correct
myClassC<string> i = new myClassC<strubg>('my string"); // InCorrect