using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp8
{
public interface Ianimal<T,U> where T:class //约束T,U只能取class类或派生类
{
void a1(T t);
void a2(U u);//中间没有逗号隔开,以空格隔开
}
//定义实体类
public class Dog1
{
public string Content { get; set; }
}
public class Dog2
{
public string Content { get; set; }
}
public class Cat1
{
public string Content { get; set; }
}
public class Cat2
{
public string Content { get; set; }
}
//实现泛型接口中的方法
public class Say1:Ianimal<Dog1,Cat1> //继承并调用接口实现方法一
{
public void a1(Dog1 D)
{
Console.WriteLine(D.Content);
}
public void a2(Cat1 C)
{
Console.WriteLine(C.Content);
}
}
public class Say2 : Ianimal<Dog2, Cat2> //继承并调用接口实现方法二
{
public void a1(Dog2 D)
{
Console.WriteLine(D.Content);
}
public void a2(Cat2 C)
{
Console.WriteLine(C.Content);
}
}
class Program
{
static void Main(string[] args)
{
Dog1 D1 = new Dog1();
D1.Content = "wow-wow";
Cat1 C1 = new Cat1();
C1.Content = "miao-miao";
Dog2 D2 = new Dog2();
D2.Content = "汪汪";
Cat2 C2 = new Cat2();
C2.Content = "喵喵";
//创建对象,调用相同接口的不同方法
Ianimal<Dog1, Cat1> Is = new Say1(); //实例化Say1类调用接口的方法
Ianimal<Dog2, Cat2> Is2 = new Say2();//实例化Say2类调用接口的方法
Is.a1(D1);
Is.a2(C1);
Is2.a1(D2);
Is2.a2(C2);
}
}
}
c#泛型接口的一个例子
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
相关阅读更多精彩内容
- 泛型的概述 我们先来了解一下泛型 泛型JDK1.5以后出现的机制是一种把类型明确的工作推迟到创建对象或者调用方法的...