黑马程序员-泛型基础

----------ASP.NET培训  期待与你交流----------

泛型:主要思想就是将算法从数据结构中抽象出来,使得预定义的操作能够作用于不同的类型,从而提高城乡的效率、通用性和类型安全性,进而简化整个编程模型。

1、为何使用泛型

实例多个重载方法:

public static void Swap(ref int x,ref int y)

{

  int temp =x;

  x=y;

  y=temp;

}

public static void Swap(ref float x,ref float y)

{

  float temp=x;

  x=y;

 y=temp;

}

.......

用泛型:

public static void Swap(ref object x,ref object y)

{

  object temp=x;

  x=y;

  y=temp;

}


综上所述:定义抽象的算法,它能够作用于“抽象的”而非“具体的”数据类型,求解实际问题时,再将抽象数据类型替换为具体类型。

类型限制:主要限制,次要限制,构造函数限制。

主要限制:是将类型参数的目标类型限制为值类型或引用类型。

public class GA<T> where T:struct //限制T的目标类型为值类型

public class GA<T> where T:class  //限制T的目标类型为引用类型

次要限制:是将类型参数的目标类型限制为从指定的基类或接口继承

public claass A

{

  public string Name;

}

public class GA<T> where T:A // 基类限制

{  }


public interface IB 

{

  decimal Value {get; }

}

public class GB<T>where T:IB  //接口限制

{   }


构造函数限制:要求目标类型必须提供一个默认的无参构造函数,书写格式是new关键字加一对括号。new限制总是出现在所有类型限制的最后。

public class BTreeNode<T>where T:struct,new ()


泛型继承规则:

基本原则:开放类型不能作为封闭类型的基类。

1)普通类之间的继承,这属于封闭类型之间的继承。

2)泛型类继承普通类型,这属于开放类型从封闭类型继承。

3)普通类型继承泛型类,此时非泛型的普通类不能直接继承自泛型类,而是只能继承泛型类的封闭构造类型,因此也属于封闭类型之间的继承。

4)泛型类型继承泛型类型,这属于开放类型之间的继承,


                    ----------ASP.NET培训  期待与你交流----------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值