 They support some features not supported directly by C++ templates such as type constraints on generic parameters by use of interfaces.On the other hand, C# does not support non-type generic parameters.Unlike generics in Java, .NET generics use reification to make parameterized types first-class objects in the Common Language Infrastructure (CLI) Virtual Machine, which allows for optimizations and preservation of the type information.