如何理解ASP.NET 2.0泛型
发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,如何理解ASP.NET 2.0泛型,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。C#2.0作为#1.X的升级版本,为我们
千家信息网最后更新 2025年02月01日如何理解ASP.NET 2.0泛型
如何理解ASP.NET 2.0泛型,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
C#2.0作为#1.X的升级版本,为我们引入了很多新的而且很实用的特性。最重要的当属ASP.NET 2.0泛型(Generics)、匿名方法(Anonymous Methods)、迭代器(Iterators)和局部类(partial Types)。这些新特性在提供高度兼容性的同时,也在很大程度上提高了代码的效率和安全性。
本节我们学习有关于ASP.NET 2.0泛型的内容。泛型存在的必要性:在1.X版本中,为了能适应不同类型的参数引入,我们常常需要重写一些函数,或者常常将其object化,以达到函数的通用性。但往往带给我们的是程序性能的下降和重复性劳动的增加。泛型的出现很好的解决了这个问题。其实简单的讲,泛型是一种可以传递或者灵活规范参数类型的机制。
泛型需要命名空间System.Collections.Generic的支持,可应用于类、方法、结构、接口、委托等设计中,集复用性、类型安全、高效率于一身。下面我们分别举例来看看泛型的几种使用方法。
1、ASP.NET 2.0泛型方法
using System; using System.Collections.Generic; public class GenericMethod { // 静态 泛型方法 public static string Output〈T 〉(T t) { return "类型:" + t.GetType(). ToString() + ";值:" + t.ToString(); } } public partial class Generic_Method : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { Response.Write(GenericMethod.Output 〈int 〉 (23) + "〈br / 〉 "); Response.Write(GenericMethod.Output 〈DateTime 〉 (DateTime.Now) + "〈br / 〉 "); } }
2、ASP.NET 2.0泛型抽象类
using System; using System.Collections.Generic; // 泛型抽象类 public abstract class GenericParent { // 泛型抽象方法,返回值为一个泛型, 加一个约束使泛型X要继承自泛型Y public abstract X Output〈 X, Y 〉 (X x, Y y) where X : Y; // 泛型抽象方法,返回值为一个string类型, 加一个约束使泛型X要继承自IListSource public abstract string Output2〈 X 〉 (X x) where X : System.ComponentModel. IListSource; } public class GenericChild : GenericParent { // 重写抽象类的泛型方法 public override T Output〈 T, Z 〉 (T t, Z z) { return t; } // 重写抽象类的泛型方法 public override string Output2〈 T 〉 (T t) { return t.GetType().ToString(); } } public partial class Generic_Abstract : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { GenericChild gc = new GenericChild(); Response.Write(gc.Output〈 string, IComparable 〉 ("aaa", "xxx")); Response.Write("〈 br / 〉 "); Response.Write(gc.Output2〈 System.Data.DataTable 〉 (new System.Data.DataTable())); Response.Write("〈 br / 〉 "); } }
3、ASP.NET 2.0泛型接口
using System; using System.Collections.Generic; // 泛型接口 public interface IGenericInterface〈T 〉 { T CreateInstance(); } // 实现上面泛型接口的泛型类 // 派生约束where T : TI(T要继承自TI) // 构造函数约束where T : new()(T可以实例化) public class Factory〈T, TI 〉 : IGenericInterface〈TI 〉 where T : TI, new() { public TI CreateInstance() { return new T(); } } public partial class Generic_Interface : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { IGenericInterface〈System.ComponentModel. IListSource 〉factory = new Factory〈System.Data.DataTable, System.ComponentModel.IListSource 〉(); Response.Write(factory.CreateInstance(). GetType().ToString()); Response.Write("〈br / 〉"); } }
4、ASP.NET 2.0泛型委托
using System; using System.Collections.Generic; public class GenericDelegate { // 声明一个泛型委托 public delegate string OutputDelegate 〈T 〉(T t); // 定义一个静态方法 public static string DelegateFun (string s) { return String.Format("Hello, {0}", s); } // 定义一个静态方法 public static string DelegateFun (DateTime dt) { return String.Format("Time, {0}", dt.ToString()); } } public partial class Generic_Delegate : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { // 使用泛型委托 GenericDelegate.OutputDelegate〈string 〉 delegate1 = new GenericDelegate.OutputDelegate 〈string 〉(GenericDelegate.DelegateFun); Response.Write(delegate1("aabbcc")); Response.Write("〈br / 〉"); // 使用泛型委托(匿名方法) GenericDelegate.OutputDelegate〈DateTime 〉 delegate2 = GenericDelegate.DelegateFun; Response.Write(delegate2(DateTime.Now)); } }
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。
方法
类型
委托
接口
函数
静态
安全
内容
参数
版本
特性
学习
帮助
支持
不同
实用
很大
清楚
重要
必要
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
公共信息网络安全监察电话
cs1.6服务器端
sql数据库自启动已关闭
家庭服务器能和阿里云一样吗
怀旧服灰烬使者服务器靠谱的公会
小学生网络安全例子
支付宝软件开发外包加班多吗
装服务器系统多少钱
网络安全与管理专业考研
win 10服务器版下载
易迅天空网络技术有限公司杭州
myriad公司数据库
网络安全法第四条规定内容
蒸汽洗车软件开发单位
荆州百事通网络技术服务
投诉网络安全的平台
php数据库成绩查询
通州区软件开发培训班
阿里云服务器安装SQL
服务器拒绝发送离线文件
自己组装服务器linux
浪潮存储服务器怎么配置
jsp学生管理数据库
广义投影数据库
数据库某个字段无法读取
辨别服务器
电容器厂软件开发
星爵网络技术有限公司怎么样
静安区智能化软件开发服务介绍
数据库属性分类及意义