c#的作用域和嵌套命名空间
本文关键字:嵌套 命名空间 作用域 | 更新日期: 2023-09-27 18:18:52
我在c#中有一个项目,其中有两个名称空间定义在单独的文件中,其中一个是另一个的子集:
namespace RSSTimerJob
namespace RSSTimerJob.Features.RSSFilter
我有一个叫做Toolbox
的静态类,它属于第一个命名空间。现在,当我尝试从第二个命名空间中的自定义类调用Toolbox
类的受保护静态变量时,我得到一个错误,说由于其保护级别而无法访问。
为什么它给我这个错误。由于第二个命名空间是第一个命名空间的子集,这是否意味着使变量受保护应该允许第二个命名空间的类看到它?
设置变量为公共当然,使这个错误消失,但我只是好奇:)
protected
不是您要使用的关键字。
internal
允许访问同一程序集中的其他类的类成员。
在c#中, 我不会为命名空间发狂。如果你有很多东西要放进去,而且这些东西足够不同,它们就很有用。下面是一些关于名称空间最佳实践的指导原则。 "protected"表示可以从同一类或派生类访问该成员。但这并不允许同一命名空间的其他成员访问该成员。 你正在寻找的可能是"内部的",这意味着成员可以被同一程序集中的代码访问。 顺便说一下,您可以从不同的程序集向同一名称空间添加更多成员。protected
允许访问派生自该基类的基成员。您可能会想到Java,其中protected
略有不同,因为它授予对同一包中的子类和类的访问权。要在c#中获得大致相同的行为,您可以使用组合protected internal
,其中包括protected
和internal
,授予对派生类的访问权限以及对同一程序集中的类的访问权限。protected
表示该事物对类本身和派生的类可用。