分享
 
 
 

泛型

王朝学院·作者佚名  2016-05-20
窄屏简体版  字體: |||超大  

泛型描述:

泛型是具有占位符(类型参数)的类、结构、接口和方法。

泛型集合类可以将类型参数用作它存储的对象的类型。

泛型方法可以将其类型参数用作其返回值的类型或某个形参的类型。

例1:泛型类定义.

定义一个类Generic,当给予其int类型时,Field字段的类型是int;当给予其string类型时,Field字段的类型是string.

public partial class Default3 : System.Web.UI.Page{ PRotected void Page_Load(object sender, EventArgs e) { Generic<int> g = new Generic<int>(); g.Field = 1; Generic<string> s = new Generic<string>(); s.Field = "123"; }}public class Generic<T>{ public T Field;}

例2:泛型方法定义是具有两个参数列表的方法:一个泛型类型参数列表和一个形参列表.类型参数可以作为返回类型或形参的类型出现.

public class Generic<T>{ public T Field; /// <summary> /// 泛型方法 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="t"></param> /// <returns></returns> public T Ge<T>(T t) { return t; }}

泛型方法可以出现在泛型或者非泛型上.此处要注意的是:

并不是只要方法属于泛型类型,或者甚至是方法的形参的类型时封闭的泛型参数,就可以说方法是泛型方法.

只有当方法具有它自己的类型参数列表时,才能称其为泛型方法.

泛型的优点:

1.提高了性能,可以有效的避免装箱和拆箱.

使用ArrayList:

protected void Page_Load(object sender, EventArgs e){ ArrayList list = new ArrayList(); //执行装箱操作 list.Add(44); //执行装箱操作 list.Add(45); foreach (int i in list) { //执行拆箱操作 Response.Write(i.ToString() + "<br/>"); } }

使用泛型:

protected void Page_Load(object sender, EventArgs e){ List<int> list = new List<int>(); //不需要执行装箱操作 list.Add(44); //不需要执行装箱操作 list.Add(45); foreach (int i in list) { //不需要执行拆箱操作 Response.Write(i.ToString() + "<br/>"); } }

2.类型安全.如果使用对象Object,则可以添加任意类型,如果泛型中确定为某一类型,则只能对该类型的对象进行操作.

见上例,可以在ArrayList中添加一个字符串,但是不能在List<int>对象中添加字符串.

泛型实例

描述:

比较狗的大小和汽车的大小.其中狗的大小衡量采用年龄,汽车的大小衡量单位是吨位.

因为要实现比较方法,所以两个类都实现了IComparable<T>接口,该接口定义如下:

namespace System{ // 摘要: // 定义由值类型或类实现的通用的比较方法,以为排序实例创建类型特定的比较方法。 public interface IComparable<T> { // 摘要: // 比较当前对象和同一类型的另一对象。 // // 参数: // other: // 与此对象进行比较的对象。 // // 返回结果: // 一个 32 位有符号整数,指示要比较的对象的相对顺序。返回值的含义如下: 值 含义 小于零 此对象小于 other 参数。零 此对象等于 other。 // 大于零 此对象大于 other。 int CompareTo(T other); }}

狗的定义如下:

public class Dog : IComparable<Dog>{ public string Name { get; set; } public int Age { get; set; } public Dog(string name, int age) { this.Name = name; this.Age = age; } public int CompareTo(Dog other) { return this.Age-other.Age; } public override string ToString() { return string.Format("Name:{0}Age:{1}<br/>", this.Name, this.Age); }}

汽车的类定义如下:

public class Car : IComparable<Car>{ public string Name { get; set; } public int Weight { get; set; } public Car(string name, int weight) { this.Name = name; this.Weight = weight; } public int CompareTo(Car other) { return this.Weight - other.Weight; } public override string ToString() { return string.Format("Name:{0}Weight:{1}<br/>", this.Name, this.Weight); }}

比较类定义如下:

public class Generic{ public static T Max<T>(T t1, T t2) { IComparable<T> ic1 = t1 as IComparable<T>; return ic1.CompareTo(t2) > 0 ? t1 : t2; }}

应用:

public partial class Default3 : System.Web.UI.Page{ protected void Page_Load(object sender, EventArgs e) { Dog d1 = new Dog("贝贝", 6); Dog d2 = new Dog("点点", 5); Display<Dog>(Generic.Max<Dog>(d1, d2)); Car c1 = new Car("奔驰", 3); Car c2 = new Car("东风", 10); Display(Generic.Max(c1, c2)); } void Display<T>(T t) { Response.Write(t.ToString()); }}

结果:

Name:贝贝Age:6Name:东风Weight:10

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有