C# 中的泛型总结
2008-04-05 15:39
190 查看
.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、泛型类的继承:原则:要求子类对应于父类的泛型参数更具体(个人理解),如父类型泛型参数,而子类没有(需要显示指定)、父类对泛型参数有约束而子类没有、父类的泛型参数比子类多,这些都是错误的,这时,子类可以从封闭式(将泛型参数指定为一个具体的类型)基类继承、
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#中的泛型程序设计总结
- C#泛型基础知识点总结
- C#个人总结,第5章:泛型
- C# 泛型学习总结
- c# 泛型总结
- 【C#复习总结】细说泛型委托
- 新手菜鸟学习C#的笔记总结 之泛型
- C#泛型编程基础知识总结
- C# 泛型学习总结(一)
- c# 泛型总结
- C#集合,泛型,以及自定义排序自己总结1
- C# 泛型List<T>学习总结
- 黑马程序员_学习日记7_C#基础归纳总结之泛型
- 读<<CLR via C#>>总结(13) 详谈泛型
- 简单实用的DataSet更新数据库的类+总结(c#)
- C#中泛型方法作用举例
- C# TreeView控件使用总结
- Atitit.js跨域解决方案attilax大总结 后台java php c#.net的CORS支持
- Visual.C#.2010从入门到精通].(Visual.C#.2010.Step.By.Step)读书笔记 泛型(十七)
- C#操作Excel的总结