C#深度学习の接口传参(interface)-----接口的妙用
一、接口可以干嘛
我们知道,接口的本质是一个约束规范,委托是方法纵向(形式上)的封装,接口是不同方法横向(广度)的封装
接口中不能有变量,但是可以有属性方法。常见的,我们可以用接口:
1、实现需求方的方法
2、接口作为参数,实现对不同类的解耦,下面是常见的男女类

public interface ISay { void Say(); } public class Man:ISay { public void Say() { Console.WriteLine("你好,我是男士!"); } } public class Woman : ISay { public void Say() { Console.WriteLine("你好,我是女士!"); } } public class Peole { public void Say(ISay iPeople) { iPeople.Say(); } } class Program { static void Main(string[] args) { Man man = new Man(); Woman woman = new Woman(); Peole peole = new Peole(); peole.Say(man); peole.Say(woman); Console.ReadLine(); } }
3、接口作返回值,返回一个实现了接口的对象,基本和上面的例子类似
二、接口可以传参(常用来做对外SDK)
下面以两种常见构型讲解
1、A工厂生产产品,B工厂代理,C工厂卖,于是我们:
public interface ITransfer { void Transfer(string msg); } public class FactoryA { public ITransfer FacATransfer = null; public FactoryA() { product(); } public void product() { int produceNum=0; Task.Factory.StartNew(()=> { while (true) { produceNum++; FacATransfer?.Transfer(String.Format("来自FactoryA的第{0}个产品", produceNum)); Thread.Sleep(2000); } }); } } public class FactoryB //中间商 { public void ConnectInit(ITransfer transfer) { FactoryA factoryA = new FactoryA(); factoryA.FacATransfer = transfer; } } public class FactoryC:ITransfer { public FactoryC() { FactoryB factoryB = new FactoryB(); factoryB.ConnectInit(this); } public void Transfer(string msg) { Console.WriteLine("为FactoryC生产,"+msg); } }
调用
class Program { static void Main(string[] args) { FactoryC factoryC = new FactoryC(); //FactoryD factoryD = new FactoryD(); Console.ReadLine(); } }
2、工厂A生产,D直接代理
public class FactoryA { public ITransfer FacATransfer = null; public FactoryA() { product(); } public void product() { int produceNum=0; Task.Factory.StartNew(()=> { while (true) { produceNum++; FacATransfer?.Transfer(String.Format("来自FactoryA的第{0}个产品", produceNum)); Thread.Sleep(2000); } }); } }
调用:
class Program { static void Main(string[] args) { //FactoryC factoryC = new FactoryC(); FactoryD factoryD = new FactoryD(); Console.ReadLine(); } }
学习请加qq群:568055323
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧