对于接口的显性实现,我举一个简单的例子。
比如接口A和接口B都有一个签名相同的方法。当一个类要同时要实现这两个接口时,可以使用显性实现。
在下面的例子里,对B接口的方法采用的是显性实现。
class TestClass : A, B
{
public int TestMethod()
{
return 10;
}
string B.TestMethod()
{
return TestMethod().ToString();
}
}
interface A
{
int TestMethod();
}
interface B
{
string TestMethod();
}
再举一个例子。
定义了一个类,执行 IEnumerable<T> 接口。
我们来看一下IEnumerable<T> 接口的定义。
可见它又继承了IEnumerable接口。
public interface IEnumerable<out T> : IEnumerable
{
IEnumerator<T> GetEnumerator();
}
而IEnumerable接口的定义为:
public interface IEnumerable
{
IEnumerator GetEnumerator();
}
可见,如果要执行IEnumerable<T> 接口,就要执行两个GetEnumerator方法,而其中的一个就必然为显性的实现:
class TestContainer<T> : IEnumerable<T>
{
public IEnumerator<T> GetEnumerator()
{
throw new NotImplementedException();
}
System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
{
throw new NotImplementedException();
}
}