1、System.Collections.Generic命名空间-——一个以集合为中心的新命名空间
2、拆箱必须回到合适的数据类型,如果尝试将数据拆箱为不正确的变量,将抛出InvaildCastException异常。
3、在传递给需要Object的方法时,值类型会自动装箱。
4、与非泛型容器相比,泛型容器的一些优势如下:
泛型提供了更好的性能,因为它们不会导致装箱和拆箱的损耗
泛型更类型安全,因为它们只包含我们指定的类型
泛型大幅减少了构建自定义集合类型的需要,因为基础类库提供了几个预制的容器。
5、在.NET基础类库的每个命名空间中几乎都可以看到泛型类、接口、结构和委托。(枚举类型不可以使用泛型)
6、为泛型项指定了类型参数后,就不能更改了(泛型是类型安全的);在泛型类或结构指定类型参数时,所有的占位符都将替换成你提供的值。
7、初始化整数的泛型List<>
List<int> myInt=new List<int>{0,1,2,3,4,5,6,7,8,9};
8、创建自定义泛型方法:
//该方法可以交换任意俩个由类型参数<T>指定的项
static void Swap<T>(ref T a,ref T b)
{
Console.WriteLine("You sent the Swap() method a {0}",typeof(T));
T temp;
temp = a;
a = b;
b = temp;
}
注意,在定义泛型方法时,类型参数在方法名称之后、参数列表之前进行指定。
9、最佳实践:在调用诸如Swap<T>之类的泛型方法时,当(且仅当)泛型方法需要参数时,我们可以选择省略类型参数,因为编译器会基于成员参数推断类型参数。但是我们应该养成显示指定类型参数的习惯。
10、泛型类可以作为其他类的基类,它可以定义许多虚方法和抽象方法。
2、拆箱必须回到合适的数据类型,如果尝试将数据拆箱为不正确的变量,将抛出InvaildCastException异常。
3、在传递给需要Object的方法时,值类型会自动装箱。
4、与非泛型容器相比,泛型容器的一些优势如下:
泛型提供了更好的性能,因为它们不会导致装箱和拆箱的损耗
泛型更类型安全,因为它们只包含我们指定的类型
泛型大幅减少了构建自定义集合类型的需要,因为基础类库提供了几个预制的容器。
5、在.NET基础类库的每个命名空间中几乎都可以看到泛型类、接口、结构和委托。(枚举类型不可以使用泛型)
6、为泛型项指定了类型参数后,就不能更改了(泛型是类型安全的);在泛型类或结构指定类型参数时,所有的占位符都将替换成你提供的值。
7、初始化整数的泛型List<>
List<int> myInt=new List<int>{0,1,2,3,4,5,6,7,8,9};
8、创建自定义泛型方法:
//该方法可以交换任意俩个由类型参数<T>指定的项
static void Swap<T>(ref T a,ref T b)
{
Console.WriteLine("You sent the Swap() method a {0}",typeof(T));
T temp;
temp = a;
a = b;
b = temp;
}
注意,在定义泛型方法时,类型参数在方法名称之后、参数列表之前进行指定。
9、最佳实践:在调用诸如Swap<T>之类的泛型方法时,当(且仅当)泛型方法需要参数时,我们可以选择省略类型参数,因为编译器会基于成员参数推断类型参数。但是我们应该养成显示指定类型参数的习惯。
10、泛型类可以作为其他类的基类,它可以定义许多虚方法和抽象方法。