Подтвердить что ты не робот

Что делает ключевое слово "where" в объявлении класса?

Я смотрю исходный код сетки MvcContrib и вижу класс, объявленный как:

public class Grid<T> : IGrid<T> where T : class

Что делает бит where T : class?

4b9b3361

Ответ 1

Это ограничение общего типа.

В этом случае это означает, что общий тип (T) должен быть ссылочным типом, то есть классом, интерфейсом, делегатом или типом массива.

Другие ограничения перечислены здесь.

Вы также можете ограничить общий тип для наследования определенного типа (базового класса или интерфейса)

Ответ 2

Из Документов http://msdn.microsoft.com/en-us/library/d5x73970.aspx

где T: class

Аргумент типа должен быть ссылочным типом; это относится также к любому классу, интерфейсу, делегированию или типу массива.

Ответ 3

Другими примерами будут

public A<T> where T : AnInterface

где AnInterface - класс интерфейса. Это значит, что T должен реализовать этот интерфейс.

Эти ограничения важны, поэтому компилятор знает операции, которые действительны для типа. Например, вы не можете вызывать функции T, не сообщая компилятору, какие функции предоставляет этот тип.

Ответ 4

Это ограничение на аргумент типа, который говорит, что T может быть либо классом, либо интерфейсом, но не перечислением или структурой. Таким образом, T должен быть ссылочным типом, а не типом значения.

С наилучшими пожеланиями,
Оливер Ханаппи

Ответ 6

вы можете применять ограничения на типы типов, которые код клиента может использовать для аргументов типа при создании экземпляра вашего класса, называются Ограничения по параметрам типа

Например: где T: class

Здесь, где T - тип, аргумент типа должен быть ссылочным типом; это относится также к любому классу, интерфейсу, делегированию или типу массива.

Ответ 7

Это ограничение общего типа. Он указывает, что тип T должен быть ссылочным типом, то есть классом, а не структурой.