2017-08-24 84 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是對的,你可以按照他剛剛展示的方式 –