我在看的MvcContrib電網的源代碼,看看聲明爲類:類聲明中的關鍵字「where」在做什麼?
public class Grid<T> : IGrid<T> where T : class
什麼是where T : class
位呢?
我在看的MvcContrib電網的源代碼,看看聲明爲類:類聲明中的關鍵字「where」在做什麼?
public class Grid<T> : IGrid<T> where T : class
什麼是where T : class
位呢?
另一個例子是
public A<T> where T : AnInterface
其中AnInterface
是一個接口類。那意味着那個T
必須實現這個接口。
這些約束很重要,以便編譯器知道對該類型有效的操作。例如,如果不告訴編譯器該類型提供的功能,則不能調用T
的函數。
這是一個關於類型參數的約束,它說T可以是類或接口,但不是枚舉或結構。所以T必須是引用類型而不是值類型。
最好的問候,
奧利弗Hanappi
你可以申請限制應用到各種客戶端代碼可以使用,當它實例化你的類類型的參數類型被稱爲Constraints on Type Parameters
例如:其中T: class
這裏的T
是Type,type參數必須是引用類型;這也適用於任何類,接口,委託或數組類型。
這是一個通用類型約束。它指定T
類型必須是引用類型,即類,而不是結構。
可能的重複http://stackoverflow.com/questions/221687/can-you-use-where-to-require-an-attribute-in-c – 2010-04-29 18:43:30
@Jon Seigel - 絕對不是這個問題的重複。 – Oded 2010-04-29 20:04:54