C# 中的泛型总结

.NET中的泛型功能相当强大,它对实现类型安全和代码重用都有很大的作用。现在将泛型的知识整理如下:

1、概念:泛型是将类型作为参数传递给类、方法、委托;

2、泛型的类型约束:是对参数类型进行约束限制,在需要使用参数类型的特定功能时,约束是必须的。如在泛型类中,需要使用参数类的一个方法时,则必须指定这个参数类是实现了一个特定的接口或源自具体的基类。约束的语法为:public class Master<T> where T : Employee{}
在应用 where T : class 约束时,避免对类型参数使用 ==!= 运算符,因为这些运算符仅测试引用同一性而不测试值相等性。即使在用作参数的类型中重载这些运算符也是如此。下面的代码说明了这一点;即使 String 类重载 == 运算符,输出也为 false。

public static void OpTest<T>(T s, T t) where T : class
{
    System.Console.WriteLine(s == t);
}
static void Main()
{
    string s1 = "foo";
    System.Text.StringBuilder sb = new System.Text.StringBuilder("foo");
    string s2 = sb.ToString();
    OpTest<string>(s1, s2);
}
3、泛型类的继承:原则:要求子类对应于父类的泛型参数更具体(个人理解),如父类型泛型参数,而子类没有(需要显示指定)、父类对泛型参数有约束而子类没有、父类的泛型参数比子类多,这些都是错误的,这时,子类可以从封闭式(将泛型参数指定为一个具体的类型)基类继承、

你可能感兴趣的:(C#)