7 c#
当我需要显式实现接口成员时,它是私有的.
例如 :
// when explicit implementation it is always private
void IPointy.Draw( )
{
}
Run Code Online (Sandbox Code Playgroud)
为什么要实施这样的设计规则?
注意 :
当两个接口具有相同的方法时,为了避免冲突,我必须明确地实现为
class Line :IPointy
{
// Now it is private
void IPointy.Draw( )
{
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是实施的原因是私人的.
Jon*_*eet 19
明确实现的接口成员不仅仅是私有的.他们是公开的 - 有点像.
它们是公开的,任何可以强制引用接口的代码都可以调用它们.(如果界面本身不公开,那么我猜你可以说它们实际上具有与界面相同的访问级别.)
它们没有任何指定的访问级别,因为它们必须在界面方面公开:没有任何选择.它们不是一般类型的公共成员的公共成员,但它们可以从任何其他程序集中调用,这些程序集可以获取引用并将其强制转换为接口类型...
C#3.0规范就是这样说的:
显式接口成员实现具有与其他成员不同的可访问性特征.因为显式接口成员实现永远不能通过方法调用或属性访问中的完全限定名来访问,所以它们在某种意义上是私有的.但是,由于它们可以通过接口实例访问,因此它们在某种意义上也是公开的.