Определение ограниченного параметра универсального типа в C # - PullRequest
9 голосов
/ 30 марта 2012

В Java можно связать параметр типа универсального типа. Это можно сделать так:

class A<T extends B>{
...
}

Таким образом, параметр типа для этого универсального класса A должен быть B или подклассом B.

Интересно, есть ли в C # похожая функция? Я ценю, если кто-нибудь даст мне знать.

Спасибо

Ответы [ 4 ]

18 голосов
/ 30 марта 2012

То же самое в C #:

class A<T> where T : B
{

}

Также см. «Ограничения на параметры типа» (msdn) для большого обзора ограничений в целом.

9 голосов
/ 30 марта 2012

Очень похоже:

public class A<T> where T : B
{
    // ...
}

Это можно использовать для ограничения T как подкласса или реализации B (если B - интерфейс).

Кроме того, выможет ограничивать T как ссылочный тип, тип значения или требовать конструктор по умолчанию:

where T : class     // T must be a reference type
where T : struct    // T must be a value type
where T : new()     // T must have a default constructor
3 голосов
/ 30 марта 2012

Да, вы можете сделать это, это называется ограничение типа.Вот статья, которая объясняет, как:

http://msdn.microsoft.com/en-us/library/d5x73970.aspx

3 голосов
/ 30 марта 2012

Конечно, вы можете:

class A<T> where T: B
{
    // ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...