本文主要是介绍C#学习系列之泛型类、分型方法、约束、泛型接口,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
C#学习系列之泛型类、分型方法、约束、泛型接口
- 泛型
- 泛型方法
- 约束
- 泛型接口
- 总结
泛型
泛型:模具,可以塑造很多产品。
class Cage<T>//用T可以直接替换多种类型
{T[] petsArray;public void Putln(T pet){}public T TakeOut(int index){}
}class DogCage
{Dog[] petsArray;public void Putln(Dog pet){}public Dog TakeOut(int index){}
}
class CatCage
{Cat[] petsArray;public void Putln(Cat pet){}public Cat TakeOut(int index){}
}
var dogCage=new Cage<Dog>();
var catCage=new Cage<Cat>();
需要多种方式使用的时候,就可以直接用T来实例化进行使用。
T可以是object,类型会比较宽泛,需要显式转换类型。
class Cage<T>{}//泛型类声明
Cage<Dog> dogCage;//Cage<Dog>类型的引用
dogCage=new Cage<Dog>();//构造实例
多次实例化就可以使用,只要维护模板,易于维护。
public class Cage<T>
{T[] array;readonly int Size;int num;public Cage(int n){Size =n;num=0;array=new T[Size];}public void Putin(T pet){if(num<Size){array[num++]=pet;}else{Console.writeLine("cage is full");}}public T TakeOut(){if(num>0){return array[--num];}else{Console.writeLine("cage is empty");return default(T);}}var dogCage=new Cage<Dog>(1);//定义只有一个dogCage.Putin(new Dog("A"); //只放进去一个var dog=dogCage.TakeOut();//把A取出来dog.PrintName();
通过上述的操作,只需要定义一个就可以后续替换,多次实例化来进行使用。
泛型方法
泛型方法就是方法的模型,给定具体的类型,就可以实例化出一个操作该类型的具体方法。
class Dog
{void DogIsHappy<T>(T target){}}
public void IsHappy<T>(T target)//在类中定义一个泛型方法
{Console.WriteLine("Happy:"+target.ToString());
}var dog=new Dog("a");//使用如下方
dog.IsHappy<Person>(new Person());
dog.IsHappy<int>(3);
约束
约束就是减少泛型参数的范围,使用后可以调用具体的方法。
对类名、class、struct、接口名、new()都可以进行约束。
约束可以叠加多个进行约束。
主约束:类名、class、struct——只能使用一个
接口约束:可以任意多个
构造约束:new()
void Cage<T>where T:Pet,IClimbTress,new(){}//where说明对T增加约束
public void IsHappy<T>(T target)where T:class
{Console.WriteLine("Happy:"+target.ToString());
}
var dog=new Dog("a");//使用如下方
dog.IsHappy<Person>(new Person());
dog.IsHappy<int>(3);//应为加了where,不能用int,必须使用类
泛型接口
将接口成员的参数和返回类型设置为泛型参数的接口。
interface IMyself<T>
{T Myself(T self);
}
class A:IMyself<A>//可以是实现类本身或者其他类型
{public A Myself(A self);
}举例:
interface ILearn <A>
{void Act(A cmd);//学习技能的接口
}
class Labrador:Dog,ILearn<Sit>
{public void Act(Sit cmd);
}
总结
学习记录
https://www.imooc.com/video/14238
https://www.imooc.com/video/14239
https://www.imooc.com/video/14240
https://www.imooc.com/video/14241
这篇关于C#学习系列之泛型类、分型方法、约束、泛型接口的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!