visual studio 2005
其他版本
泛型方法是使用型別引數宣告的方 法,如下所示:
c#c++
f#jscript
複製
static下面的**示例演示一種使用 int 作為型別引數的方法呼叫方式:void
swap(ref
t lhs, ref
t rhs)
c#c++
f#jscript
複製
public也可以省略型別引數,編譯器將推斷出該引數。下面對 swap 的呼叫等效於前面的呼叫:static
void
testswap()
c#c++
f#jscript
複製
swap(ref相同的型別推斷規則也適用於靜態方法以及例項方法。編譯器能夠根據傳入的方法引數 推斷型別引數;它無法僅從約束或返回值推斷型別引數。因此,型別推斷不適用於沒有引數��方法。型別推斷在編譯時、編譯器嘗試解析任何過載方法簽名之前進 行。編譯器向共享相同名稱的所有泛型方法應用型別推斷邏輯。在過載解析步驟中,編譯器僅包括型別推斷取得成功的那些泛型方法。a, ref
b);
在泛型類 中,非泛型方法可以訪問類級別型別引數,如下所示:
c#c++
f#jscript
複製
class如果定義的泛型方法接受與包含類相同的型別引數,編譯器將生成警告 cs0693,因為在方法範圍內,為內部 t 提供的引數將隱藏為外部 t 提供的引數。除了類初始化時提供的型別引數之外,如果需要靈活呼叫具有型別引數的泛型類方法,請考慮為方法的型別引數提供其他識別符號,如下面示例中的 genericlist2 所示。sampleclass
}
c#c++
f#jscript
複製
class使用約束對方法中的型別引數啟用更專門的操作。此版本的 swap 現在稱為 swapifgreater ,它 只能與實現 icomparable 的型別引數一起使用。genericlist
}class
genericlist2
}
c#c++
f#jscript
複製
void泛型方法可以使用許多態別引數進行過載。例如,下列方法可以全部存在於同乙個類 中:swapifgreater(ref
t lhs, ref
t rhs) where
t : system.icomparable
}
c#c++
f#jscript
複製
voiddowork()
void
dowork()
void
dowork()
泛型(C 程式設計指南)
泛型是 2.0 版 c 語言和公共語言執行庫 clr 中的乙個新功能。泛型將型別引數的概念引入 net framework,型別引數使得設計如下類和方法成為可能 這些類和方法將乙個或多個型別的指定推遲到客戶端 宣告並例項化該類或方法的時候。例如,通過使用泛型型別引數 t,您可以編寫其他客戶端 能夠使...
泛型方法(C 程式設計)
泛型方法是使用型別引數宣告的方法,如下所示 c static void swap ref t lhs,ref t rhs 下面的 示例演示一種使用 int 作為型別引數的方法呼叫方式 c public static void testswap 也可以省略型別引數,編譯器將推斷出該引數。下面對 swa...
C 泛型型別 泛型方法
泛型會宣告型別引數 泛型的消費者需要提供型別引數來把佔位符型別填充 public class stack var stack newstack int stack.push 2 stack.push 3 int x stack.pop 2int y stack.pop 3stack open typ...