Я смотрю исходный код сетки MvcContrib и вижу класс, объявленный как:
public class Grid<T> : IGrid<T> where T : class
Что делает бит where T : class
?
Я смотрю исходный код сетки MvcContrib и вижу класс, объявленный как:
public class Grid<T> : IGrid<T> where T : class
Что делает бит where T : class
?
В этом случае это означает, что общий тип (T
) должен быть ссылочным типом, то есть классом, интерфейсом, делегатом или типом массива.
Другие ограничения перечислены здесь.
Вы также можете ограничить общий тип для наследования определенного типа (базового класса или интерфейса)
Из Документов http://msdn.microsoft.com/en-us/library/d5x73970.aspx
где T: class
Аргумент типа должен быть ссылочным типом; это относится также к любому классу, интерфейсу, делегированию или типу массива.
Другими примерами будут
public A<T> where T : AnInterface
где AnInterface
- класс интерфейса. Это значит, что T
должен реализовать этот интерфейс.
Эти ограничения важны, поэтому компилятор знает операции, которые действительны для типа. Например, вы не можете вызывать функции T
, не сообщая компилятору, какие функции предоставляет этот тип.
Это ограничение на аргумент типа, который говорит, что T может быть либо классом, либо интерфейсом, но не перечислением или структурой. Таким образом, T должен быть ссылочным типом, а не типом значения.
С наилучшими пожеланиями,
Оливер Ханаппи
Он ограничивает T ссылочным типом, включая любой класс, интерфейс, делегат или тип массива.
вы можете применять ограничения на типы типов, которые код клиента может использовать для аргументов типа при создании экземпляра вашего класса, называются Ограничения по параметрам типа
Например: где T: class
Здесь, где T
- тип, аргумент типа должен быть ссылочным типом; это относится также к любому классу, интерфейсу, делегированию или типу массива.
Это ограничение общего типа. Он указывает, что тип T
должен быть ссылочным типом, то есть классом, а не структурой.