That would be a "Generic". As people have already mentioned, there is a Microsoft explanation of the concept. As for why the "T" - see this question.
In a nutshell, it allows you to create a class/method which is specialized to a specific type. A classical example is the System.Collections.Generic.List<T>
class. It's the same as System.Collections.ArrayList
, except that it allows you to store only item of type T
. This provides type safety - you can't (accidentally or otherwise) put items of the wrong type in your list. The System.Collections.Generic
namespace contains several other different collection types which make use of this.
As for where you could use it - that's up to you. There are many use-cases which come up from time to time. Mostly it's some kind of a self-made collection (when the builtin ones don't suffice), but it could really be anything.