无为清净楼资源网 Design By www.qnjia.com
以前在用到接口时,从来没注意到接口分为隐式实现与显示实现。昨天在浏览博客时看到相关内容,现在根据自己的理解记录一下,方便日后碰到的时候温习温习。
通俗的来讲,“显示接口实现”就是使用接口名称作为方法名的前缀;而传统的实现方式称之为:“隐式接口实现”。费话不说,例子如下:
复制代码 代码如下:
interface IAnimal
{
void Dog();
}
class Animal:IAnimal
{
public void Dog()
{
Console.WriteLine("dog...");
}
}
定义了一个IAnimal接口,一般我们都会这么调用:
//通过类调用
Animal animal = new Animal();
animal.Dog();
//或者通过接口调用
IAnimal animal = new Animal();
animal.Dog();
类和接口都能调用到,事实上这就是“隐式接口实现”。
那么“显示接口实现”是神马模样呢?
复制代码 代码如下:
interface IAnimal
{
void Dog();
}
class Animal:IAnimal
{
void IAnimal.Dog()
{
Console.WriteLine("dog...");
}
}
//只能通过接口调用
IAnimal animal = new Animal();
animal.Dog();
用类的方法去实现时会报错,不允许,“显示接口实现”只允许接口实现。如果真想用类来实现呢,那必须要进行一下强制类型转换。
//强制类型转换后即可
Animal animal = new Animal();
(animal as IAnimal).Dog();
既然显示接口实现这么不给力,为什么还要存在了,凡事存在即合理。在实际项目中,有时某个类往往会继承多个接口,而接口中往往会有一些相同名称、参数与类型的值。通过显式接口实现可以为避免一些不必要的歧义(我在项目中碰到的不多,可能是因为项目太小的原因吧)。
显示接口实现与隐式接口实现的适应场景
当类实现一个接口时,通常使用隐式接口实现,这样可以方便的访问接口方法和类自身具有的方法和属性。
当类实现多个接口时,并且接口中包含相同的方法签名,此时使用显式接口实现。即使没有相同的方法签名,仍推荐使用显式接口,因为可以标识出哪个方法属于哪个接口。
隐式接口实现,类和接口都可访问接口中方法。显式接口实现,只能通过接口访问。
通俗的来讲,“显示接口实现”就是使用接口名称作为方法名的前缀;而传统的实现方式称之为:“隐式接口实现”。费话不说,例子如下:
复制代码 代码如下:
interface IAnimal
{
void Dog();
}
class Animal:IAnimal
{
public void Dog()
{
Console.WriteLine("dog...");
}
}
定义了一个IAnimal接口,一般我们都会这么调用:
//通过类调用
Animal animal = new Animal();
animal.Dog();
//或者通过接口调用
IAnimal animal = new Animal();
animal.Dog();
类和接口都能调用到,事实上这就是“隐式接口实现”。
那么“显示接口实现”是神马模样呢?
复制代码 代码如下:
interface IAnimal
{
void Dog();
}
class Animal:IAnimal
{
void IAnimal.Dog()
{
Console.WriteLine("dog...");
}
}
//只能通过接口调用
IAnimal animal = new Animal();
animal.Dog();
用类的方法去实现时会报错,不允许,“显示接口实现”只允许接口实现。如果真想用类来实现呢,那必须要进行一下强制类型转换。
//强制类型转换后即可
Animal animal = new Animal();
(animal as IAnimal).Dog();
既然显示接口实现这么不给力,为什么还要存在了,凡事存在即合理。在实际项目中,有时某个类往往会继承多个接口,而接口中往往会有一些相同名称、参数与类型的值。通过显式接口实现可以为避免一些不必要的歧义(我在项目中碰到的不多,可能是因为项目太小的原因吧)。
显示接口实现与隐式接口实现的适应场景
当类实现一个接口时,通常使用隐式接口实现,这样可以方便的访问接口方法和类自身具有的方法和属性。
当类实现多个接口时,并且接口中包含相同的方法签名,此时使用显式接口实现。即使没有相同的方法签名,仍推荐使用显式接口,因为可以标识出哪个方法属于哪个接口。
隐式接口实现,类和接口都可访问接口中方法。显式接口实现,只能通过接口访问。
标签:
显示接口,隐式接口,C#接口
无为清净楼资源网 Design By www.qnjia.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
无为清净楼资源网 Design By www.qnjia.com
暂无评论...
更新日志
2024年09月27日
2024年09月27日
- 纯音入心系列纯音乐《中央民族乐团-古筝传奇》1CD[MP3][253.1MB]
- 江玲.1989-这样你才爱我,是吗?【新作有声】【WAV+CUE】
- 郭美美.2010-我是郭美美【华纳】【WAV+CUE】
- 黄心懋1991-轻忧郁【滚石】【WAV+CUE】
- 群星.2000-大地金曲世纪回顾2CD【大地】【WAV+CUE】
- 王菲.1996-浮躁(2024环球MQA-UHQCD限量版)【环球】【WAV+CUE】
- 群星.2022-传家电视剧原声带【东阳欢娱】【FLAC分轨】
- 《摇滚教父 伍佰黄金精选 2CD》 [WAV+CUE][1GB]
- 《凤凰传奇 我从草原来》[WAV/分轨][400MB]
- 《叶倩文 真心真意过一生》[WAV+CUE][400MB]
- 潘越云.1985-世间女子(滚石25周年经典复刻版)【滚石】【WAV+CUE】
- 陈柏宇.2009-CANT.BE.HALF【SONY】【WAV+CUE】
- 李明依.1989-小女生【滚石】【WAV+CUE】
- 《李荣浩 新时代创作新人王》[WAV分轨][310MB]
- 《黑鸭子与马头琴 史上最动听草原音乐》[WAV+CUE][320MB]