通過接受一個限定的參數,這個參數是實現某個接口的類,比較起直接接受泛型,而限制這個泛型的類要更加靈活。也就是通常所說的面向接口式的編程。這樣可以達到調用實現了這個接口的各種泛型的實例。這種對泛型使用接口約束的應用,在.net框架中有很廣泛的應用。下面是一個實例(命名爲IntfConstraint)。
首先,需要聲明一個接口:
接下來我們定義一個類實現這個接口:
精彩內容從下面開始,接着我們定義一個泛型類,這泛型類被限定了是實現了(我們上面定義的)指定的接口:
這個類的泛型方法如下:
有了如上的定義,我們可以這樣使用這個泛型類(數值型參數,接着還有其他類型參數的):
爲了展現這個泛型類的靈活性,我又建立了一個完全不同的(對GetValue接口)的實現:
ButtonValue中,生成按鈕座標位置(隨機位置,在父對象中)的成員函數,這個和主題關係不大,所以收縮
ButtonVaule中GetVaule和SetValue實現:
下面是第二種(按鈕座標)泛型類的使用:
源代碼下載 (已添加了中文註釋)