在《The C++ Programming Language》一书中,Bjarne
Stroustrop讨论了模板方法在C语言中的伪实现-通过使用预处理和宏来模拟。Stroustrop创建了这种灵活运用C语言的模板和宏的能力,它使得模板成为用C语言创建类(现在的C++)的相当成熟的一部分。另外的优点是,模板是由编译器进行类型检查的,而不是简单地通过预处理器进行文本替换。
Module Module1 Sub Main() Dim I As Integer = 5 Dim J As
Integer = 7 Swap(Of Integer)(I, J) Console.WriteLine("I = " &
I) Console.WriteLine("J = " & J) Dim S As String =
"Paul" Dim R As String = "Lori" Swap(Of String)(S,
R) Console.WriteLine("S = " & S) Console.WriteLine("R = "
& R) Console.ReadLine() End Sub
Public Sub Swap(Of
T)(ByRef a As T, ByRef b As T) Dim temp As T temp = a a =
b b = temp End Sub End
Module 注意:在这个例子中,你也能把一个对象数据类型使用于该Swap方法,因为所有的.NET类型共享一个通用的类型。
Public Sub Swap(Of T As Structure)(ByRef a As T, ByRef b As T) Dim
temp As T temp = a a = b b = temp End
Sub 参数化类型可以被限制到结构、类、基类、接口以及有缺省构造器(如没有参数的Sub
New)的类型。列表2中的加粗的As谓词展示了怎样约束参数化的类型。