泛型是内置于.NET Framework(最初在.NET Framework 2.0中引入)中的技术。它允许定义代码模板,然后使用这个模板声明变量。该模板定义了新数据类型可以执行的操作,声明基于该模板的变量,实际上就是创建了一个新的数据类型。与非类型化的集合或数组相比,使用泛型模板更容易创建强类型化的集合类型。
System.Collections.Generic 命名空间
https://docs.microsoft.com/zh-cn/dotnet/api/system.collections.generic?view=netframework-4.8
Dictionary<TKey,TValue> 类
KeyValuePair<TKey,TValue> 结构
.NET基类库(BCL)里有很多泛型模板。它们大多位于System.Collections.Generic名称空间中,也有一部分分布在其他的BCL中。泛型集合类型有许多例子,这是因为使用泛型所带来的性能提升最显著。在其他情况下,泛型使用得比较少,因为泛型所带来的性能提升比它们提供的强类型化优势少。任何使用集合数据类型的地方都应当使用泛型代替。
泛型通常采取List(Of T)这样的形式。这里List是类型(或者类)的名称,字母T是—个占位符,类似于参数。它表示必须提供一个用来定制泛型的特定类型值。例如,使用List(Of T)泛型声明变量的代码如下:
Dim data As New List (Of Date)
这里的类型参数T是Date。提供这个类型就是指定表中只能存储Date类型的值。
泛型有两种形式:泛型类型和泛型方法a例如,List(Of T)是一个泛型类型,它是定义完整类型或者类的模板;而泛型方法是一种方法模板,用户调用该模板时,必须指定方法使用的具体类型。
Nullable<T> 结构
https://docs.microsoft.com/zh-cn/dotnet/api/system.nullable-1?view=netframework-4.8
Guid 结构
https://docs.microsoft.com/zh-cn/dotnet/api/system.guid?view=netframework-4.8
BindingList<T> 类
示例看源码。