欢迎光临散文网 会员登陆 & 注册

C#之接口介绍

2020-11-25 15:52 作者:白白_可乐  | 我要投稿

什么是接口呢?

在生活中大家其实接触过不少接口的例子,比如手机充电器有micro USB,Type-C,lighting等,电源线有两头,三头,使用正确的插头就能够插到对应的接口中,但是如果不匹配,就不能契合.

此处引用微软C#文档对于接口的定义:

微软文档对于接口的定义

https://docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/keywords/interface

所谓接口,就是需要实现类必须实现指定的方法和属性.

说回代码中,我举一个例子,假设我们有一家饭店,我们要招聘能做菜的厨师,可能有的小伙伴会这么写代码:

饭店招聘厨师

很好,那么让我们用代码模拟开店,会发生什么呢?

工具人一号应聘

先使用创造者之力实例化一个工具人,然后招聘他,完美,没有报错.

但是这个厨师除了顶着一个厨师的头衔之外,什么能力都没有,是个无能力者,那么,让我们赋予他一项能力吧:

工具人一号做菜

很好,这下我们在招聘的时候就能检查应聘人员的厨艺了.本期专栏到此结束


我们的饭店成功开张了,过了段时间,我们需要招聘新的厨师,但是来的却和之前的厨师不一样,怎么回事呢?这个时候,我们就需要完善一下世界观(重构代码):


工具人二号应聘

不好,程序报错了,工具人二号没有通过招聘,这时候他十分不满:你是不是看不起我?我也会做菜,为什么不要我,就因为我是工具人吗?

我们来检查一下这段,虽然江湖菜厨师也会做菜,但是因为我们在写招聘函数的时候,对参数固定为了厨师类,所以当我们传入一个江湖菜厨师类型的时候,程序就会报错了,这种时候,我们可以像下面这样优化代码:

初次使用接口

将接口引入我们的代码之后,将函数的传入参数改为接口类型,这样一来,实现了做菜接口的厨师类和江湖菜厨师都可以成功通过招聘的.

有一天我们的饭店来了几个神秘人,说他们也要来应聘,但是恰好我们的招聘官拉肚子来不了,不能直接判断应聘者的能力,这个时候我们就只好重新再写一个函数来检测他们的实力了,世界观再度扩展(代码重构)

世界观扩展

如上图所示,我们可以通过 is 关键字来判断变量是否属于指定类型,用在接口上的话,就是判断该变量是否属于实现了对应接口的类.

我们还可以用 as 关键字来实现类型转换,如果不能成功转换,会返回 null

使用as进行类型转换

不过好像混进了一些奇怪的家伙.

就先到这里吧.

C#之接口介绍的评论 (共 条)

分享到微博请遵守国家法律