It’s a generic type, very useful in classes where the content can be of different types. A good example is List, where T specifies what types the elements in the list belong to. Sure, you can use non-generic types such as ArrayList, but that means that when you access an element in the list, you won’t know its type. You could of course create a non-generic list-type that takes the element type as a parameter to the constructor, but that just means type-checking needs to be done at run-time instead of relying on C#’s type checking.
solved Why putting