gpt4 book ai didi

C# - "Explicitly implemented interface members are always implicitly private ?"的原因是什么

转载 作者:太空狗 更新时间:2023-10-29 19:55:25 24 4
gpt4 key购买 nike

当我需要显式实现接口(interface)成员时,它是私有(private)的。

例如:

 // when explicit implementation it is always private
void IPointy.Draw( )

{

}

为什么要强制执行这样的设计规则?

注意:

当两个接口(interface)具有相同的方法时,为了避免冲突,我必须显式实现如下

class Line :IPointy
{

// Now it is private
void IPointy.Draw( )

{


}

}

我的问题是实现 is as private 的原因。

最佳答案

显式实现的接口(interface)成员不仅仅是私有(private)的。它们是公开的 - 有点。

它们是公共(public)的,因为任何可以将引用转换为接口(interface)的代码都可以调用它们。 (如果接口(interface)本身不是公共(public)的,那么我想你可以说它们实际上具有与接口(interface)相同的访问级别。)

它们没有任何指定的访问级别,因为它们必须在接口(interface)方面是公开的:没有选择的余地。它们不是与类型的普通公共(public)成员相同的公共(public)成员,但它们可以从任何其他可以获取引用并将其转换为接口(interface)类型的程序集调用...

C# 3.0 规范是这样说的:

Explicit interface member implementations have different accessibility characteristics than other members. Because explicit interface member implementations are never accessible through their fully qualified name in a method invocation or a property access, they are in a sense private. However, since they can be accessed through an interface instance, they are in a sense also public.

关于C# - "Explicitly implemented interface members are always implicitly private ?"的原因是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1392252/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com