Это называется generics
where T : class
означает, что тип, который вы предоставляете, должен быть классом, вы не можете использовать примитивные типы.(например, )
Это определение объекта с именем Next
типа Node<T>
.Если при создании экземпляра этого класса указан тип Size
, это означает, что это свойство будет Node<Size>
.
public Node<T> Next { get; set; }
. И это:
public T Value { get; set; }
будет таким жекак
public Size Value { get; set; }
См. обобщения на MSDN