It’s a symbol for a generic type parameter. It could just as well be something else, for example:
public class SomeBase<GenericThingy> where GenericThingy : SomeBase<GenericThingy>, new()
Only T is the default one used and encouraged by Microsoft.
More Related Contents:
- In C#, why can’t a List object be stored in a List variable
- Why isn’t there generic variance for classes in C# 4.0?
- Making a generic property
- foreach vs someList.ForEach(){}
- Why cannot C# generics derive from one of the generic type parameters like they can in C++ templates? [duplicate]
- How do I implement IEnumerable
- No type inference with generic extension method
- Passing a single item as IEnumerable
- How do I make the return type of a method generic?
- Static Generic Class as Dictionary
- Get a generic method without using GetMethods
- explicitly cast generic type parameters to any interface
- Anonymous Types – Are there any distingushing characteristics?
- A reusable pattern to convert event into task
- Collection of generic types
- C# Generic Type Inference With Multiple Types
- How do I create a generic class from a string in C#? [duplicate]
- Parse string to enum type
- Declare a generic type instance dynamically [duplicate]
- T must be contravariantly valid
- Ambiguous call between two C# extension generic methods one where T:class and other where T:struct
- How do I tell if a type is a “simple” type? i.e. holds a single value
- Generics can’t infer second parameter? [duplicate]
- How to define generic type limit to primitive types?
- Why doesn’t C# support implied generic types on class constructors?
- What’s Wrong with an ArrayList?
- Implementing arithmetic in generics?
- The component does not have a resource identified by the uri
- C# generic methods, type parameters in new() constructor constraint
- generic NOT constraint where T : !IEnumerable