c#基础学习1——泛型
整理自慕课西安交通大学的c#程序设计
慕课西安交通大学——c#程序设计
1.泛型:
1.1使用泛型的方法:
void Display<T>(T[] input){foreach(T k in input){}}
该函数在实际调用时,由编译器自动匹配T的类型
1.2使用泛型的类:
class stack<T>{} //类的声明stack<int> s = new stack<int>(); //类的实例化
注意:当该类被实例化成int类型时,堆栈里面也只能存放int类型的实例,这也是相比较与用object类型的好处:只能存放一种类型,在当在使用时发生类型使用错误,编译时就会报错,而不是像使用object类型那样在运行时才会报错。
注意:
在c#中,使用object的stack类被放在
System.Collections
使用泛型的stack类放在:
System.Collections.Generic
2.泛型的约束
where T:struct //T必须为数值类型where T:class //T必须为引用类型where T:IFoo //T必须实现IFoo接口where T:Foo //T必须为Foo的派生类where T:new() //T必须具有默认构造函数
注意:若有多个约束,则用逗号分开
3.泛型缺省值
对于一个具体的类型都有其默认值,例如int的默认值为0,引用类型默认值为null。
对于泛型:
T t = default(T);
若T被引用类型取代,T的默认值为null;T被int型取代,默认值则为0。