可能重复:
C#:接口 - 隐式和显式实现
有人会解释这两种野兽之间的差异以及如何使用它们.AFAIK,许多pre.2.0类在没有泛型类型的情况下实现,因此导致后一版本实现这两种接口.是否需要使用它们的唯一情况?
你能否深入解释如何使用它们?
谢谢
And*_*ett 115
基本上使用隐式接口实现,您可以访问接口方法和属性,就好像它们是类的一部分一样.使用显式接口实现,您只能在将其视为该接口时访问它们.
就何时使用一个而不是另一个而言,有时您必须使用显式接口实现,因为您要么具有与接口具有相同签名的属性/方法,要么您希望实现具有相同签名的两个接口并具有不同的实现匹配的那些属性/方法.
以下规则来自Brad Abrams 设计指南博客.
Brad的博客评论中也提到,在对值类型使用显式实现时会涉及到拳击,因此请注意性能成本.
小智 24
通俗地说,如果一个类继承自2个或更多接口,并且接口碰巧具有相同的方法名称,则如果使用隐式接口实现,则该类不知道正在实现哪个接口方法.这是您明确实现接口的方案之一.
隐式接口实现
public class MyClass : InterfaceOne, InterfaceTwo
{
public void InterfaceMethod()
{
Console.WriteLine("Which interface method is this?");
}
}
interface InterfaceOne
{
void InterfaceMethod();
}
interface InterfaceTwo
{
void InterfaceMethod();
}
Run Code Online (Sandbox Code Playgroud)
显式接口实现
public class MyClass : InterfaceOne, InterfaceTwo
{
void InterfaceOne.InterfaceMethod()
{
Console.WriteLine("Which interface method is this?");
}
void InterfaceTwo.InterfaceMethod()
{
Console.WriteLine("Which interface method is this?");
}
}
interface InterfaceOne
{
void InterfaceMethod();
}
interface InterfaceTwo
{
void InterfaceMethod();
}
Run Code Online (Sandbox Code Playgroud)
以下链接有一个很好的视频,解释了这个概念
显式接口实现
| 归档时间: |
|
| 查看次数: |
44728 次 |
| 最近记录: |