C#面向对象入门知识(二)

C#面向对象入门知识(二)

泛型

泛型类
定义:泛型类就是一个模子,装入类型的材料,可以塑造出想要的产品。

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");
    }
    }
}
//
var dogCage =new Cage<Dog>(1);
dogCage.putin(new Dog("A"));

泛型方法
定义:泛型方法就是方法的模型,给定具体的类型,就可以实例化出一个操作该类型的具体方法。(泛型类中往往有泛型方法,普通类也可以有泛型方法。)

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);

约束
定义:约束就是控制泛型的缰绳,缩小泛型的参数范围。
意义:只有添加了约束(泛型类和方法都可以添加约束),才能调用泛型参数中(比如T)的方法。
约束的类型:类名(该类或者继承该类的类),class(任何类),struct(任何值),接口名(该接口类型或任何实现该接口的类型),new(带有无参构造函数的类)
约束叠加规则:A.主约束(类名,class,struct,只能有一个),B.接口约束(任意多个),C.构造约束。如:

void Cage<T>
where T:Pet,IclimbTree,new();
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);  会报错,因为int不是类类型。

泛型接口
泛型接口允许我们将接口成员的参数和返回类型设置为泛型参数的接口。
语法:

interface IMyself(T){
    T Myself(T self);
}

实现泛型接口语法

class A:IMyself<A>{
    public A Myself(A self);
}
public class SitDogCmd:DogCmd
{
public override string GetCmd()
{
return "sit";
}
}
//
public interface IDogLearn<C> where C:DogCmd
{
    void Act(C cmd);
}
//
public class Labrador:Dog,IDogLearn<SitDogCmd>
{
public Labrador(string )(name)
    {
    }
    public void Act(SitDogCmd cmd)
    {
    Console.WriteLine(cmd.GetCmd());
    }
}
//
Labrador dog = new Labrador("A");
dog.Act(new SitDogCmd());
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值