Shi*_*vku 3 c# properties interface access-modifiers
默认情况下,接口和实现接口的类中的方法是公共的。他们不需要提到的访问器。
为什么属性,特别是在实现接口的类中,需要提到公共访问修饰符?无论如何都不允许使用其他修饰符。
那是不准确的。
接口中的任何内容都是公共的,即使接口本身是内部的,因此您不能为接口的任何成员设置任何访问修饰符。
在实现接口的类中,显式实现接口的任何成员(属性、方法、事件或索引器)都是公共的,您也不能为其设置任何访问修饰符。
但是任何隐式实现接口的成员都必须指定访问修饰符。
由于接口中的所有内容都是公共的,并且您不能根据访问修饰符重载方法,因此任何其他修饰符都会产生编译错误。
为什么编译器会强制您将隐式接口实现成员声明为公共成员?
嗯,我不确定原因,但我认为这是因为类成员的默认访问修饰符是private,并且允许程序员在不指定public访问修饰符的情况下隐式实现接口意味着 c# 编译器团队必须进行一些额外的工作为了实现这一点,并且(我认为)更重要的是,有可能使任何查看代码的开发人员感到困惑,鉴于实现是隐式的,并且不知道接口,您就无法知道类中的方法是否是实现接口或只是一个常规方法。