为什么c#中有默认的可访问性级别?

本文关键字:访问 默认 为什么 | 更新日期: 2023-09-27 18:16:13

最近,我一直在用Java和c#做一些工作。在Java中,不指定类或类成员的可访问性使其包私有(不存在显式修饰符)。在c#中,这是不同的,因为可访问性总是默认为可以用相应的修饰符显式指定的级别(例如,顶级类的internal)。

c#是一门设计良好的语言,那么为什么它甚至包含了根据类型和嵌套类型默认设置不同级别的功能,而不是强迫用户显式设置呢?有什么我不知道的好处吗?

为什么c#中有默认的可访问性级别?

我认为你的问题的答案是,它是方便的提供默认访问,特别是在像结构,你通常希望一切都是公共的,往往一个类的很大一部分将是私有的。

然而,我个人希望它可以强制它是显式的,因为它使源代码更加一致,并且防止您忘记将成员设置为公共-我主要的抱怨是我经常创建一个新的属性或方法,忘记将其显式设置为公共,然后当我后来从外部类中使用它时,因为该成员没有出现在自动完成列表中而感到困惑。意识到发生了什么并修复它比修复像"没有明确指定x的访问级别"这样的警告需要更多的时间。