2017-08-24 75 views
0

我有这个类:这是什么意思:类名<T>其中T:

public static class Repository<T> where T : class 
{ 
    .... 
} 

我明白publicstaticclassRepository<T>,但我不理解这一点:

where T : class 

是否Repository延伸或实施class?或者: class参考<T>类型?

!! ALSO !!:

而且,如果我有一个抽象基类DataAccessBase,我想这个类Repository继承,我该怎么办呢?

+1

它是[类型约束](https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/generics/constraints-on-type-parameters)。 –

+0

'where T'指'T'类型后的声明。另外,你将它实例化为任何其他泛型类,':class'将类型限制为引用类型,而不是值类型。 – Gusman

+0

https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/where-generic-type-constraint –

回答

3

我们将其限制为通过class作为通用参数进行消耗,而不是与struct值类型)一起使用。

如果我们不T应用class的约束,将它与struct也和笔者在这里限制了这个通用类,使用与T参数与类型参数的引用类型,即class为可用的。

欲了解更多详情,请参阅MSDN docs on Type Constraint

+0

好的,谢谢!所以,如果我想让这个类Repository也从一个抽象基类继承,那么这个语法是什么样的? –

+1

public class Repository :DataAccessBase其中T:class – GhostTW

+0

@GhostTW是对的,你可以按照他刚刚展示的方式 –