【C#】定义多泛型、泛型约束与接口并用

说起来挺智障的,今天有个需求就是实现多个泛型,但是忘了怎么写了,搜了一圈竟然没搜着,偶然看见有人提起Dictionary,心想那不就是多泛型吗,赶紧试了试发现能用,如下:

//泛型TA中需要实现的接口
public interface IAFunc
{
    A()
}

//泛型TB中需要实现的接口
public interface IBFunc
{
    B()
}

//在Tag类中给两泛型TA、TB同时添加约束
public class Tag<TA,TB> 
    where TA:IAFunc
    where TB:IBFunc
{
    //做点什么...
}

然后,又发现一个更智障的问题:我想在这个Tag类中实现一个接口,但是惊讶地发现不知道该在哪写了!又是一顿搜索,仍然没找到答案,硬试,试出来了:

//泛型TA中需要实现的接口
public interface IAFunc
{
    void A()
}

//泛型TB中需要实现的接口
public interface IBFunc
{
    void B()
}

public interface ITag
{
    void C()
}

//在Tag类中给两泛型TA、TB同时添加约束
//在泛型尖括号后与where前用冒号实现接口的引用
public class Tag<TA,TB> :ITag
    where TA:IAFunc
    where TB:IBFunc
{
    //做点什么...
    //别忘了实现C()
    void C(){}
}

之前还批评java的extends与implement写着麻烦,看来遇到这种高级用法的时候还是Java更直观一些。C#虽然冒号走遍天下,事一多反而不知道冒号该加哪了。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据