----------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培训 期待与你交流----------