您的位置:首页 - C#
实现接口与显式实现接口
C#在实现接口的时候,Visual Studio提供了两个菜单,一个是"实现接口",一个是"显式实现接口",它们到底有何不一样呢

我们来比较一下看看

1.首先假设我们有一个接口

public interface ICustomer
{
void SomeMethod();
}

2.如果是"实现接口",那么代码大致如下

public class Customer:ICustomer
{

#region ICustomer 成员

public void SomeMethod()
{
throw new NotImplementedException();
}

#endregion
}

3.如果是"显式实现接口",那么代码大致如下

public class Customer:ICustomer
{

#region ICustomer 成员

void ICustomer.SomeMethod()
{
throw new NotImplementedException();
}

#endregion
}

大家看到差别了吧?显式实现的方式,那些方法都会加上一个前缀的。但是,这到底意味着什么呢?

如果是实现接口

public class DAL {
/// <summary>
/// 如果我们是直接实现接口的话,那么既可以用接口调用方法,也可以用具体类调用方法
/// </summary>
public void GetCustomer() {
Customer customer = new Customer();
customer.SomeMethod();
}

public void GetCustomer2() {
ICustomer customer = new Customer();
customer.SomeMethod();
}
}

如果是显式实现接口

public class DAL {
/// <summary>
/// 如果我们是显式实现接口的话,那么要访问里面的方法就只能是通过接口来调用,而不能通过具体类来做
/// </summary>
public void GetCustomer() {
ICustomer customer = new Customer();
customer.SomeMethod();
}
}



现在大部分的系统为了保证扩展性,都广泛地使用接口。显式实现接口,可以隐藏具体类的复杂性。

查阅MSDN,发现了以下内容(相应上面实现接口的说明)。
实现接口的类可以显式实现该接口的成员。当显式实现某成员时,不能通过类实例访问该成员,而只能通过该接口的实例访问该成员。
本站导航
相关文章
柯乐义 Copyright© keleyi.com