c#的作用域和嵌套命名空间

本文关键字:嵌套 命名空间 作用域 | 更新日期: 2023-09-27 18:18:52

我在c#中有一个项目,其中有两个名称空间定义在单独的文件中,其中一个是另一个的子集:

namespace RSSTimerJob
namespace RSSTimerJob.Features.RSSFilter

我有一个叫做Toolbox的静态类,它属于第一个命名空间。现在,当我尝试从第二个命名空间中的自定义类调用Toolbox类的受保护静态变量时,我得到一个错误,说由于其保护级别而无法访问。

为什么它给我这个错误。由于第二个命名空间是第一个命名空间的子集,这是否意味着使变量受保护应该允许第二个命名空间的类看到它?

设置变量为公共当然,使这个错误消失,但我只是好奇:)

c#的作用域和嵌套命名空间

protected不是您要使用的关键字。

internal允许访问同一程序集中的其他类的类成员。

在c#中,protected允许访问派生自该基类的基成员。您可能会想到Java,其中protected略有不同,因为它授予对同一包中的子类和类的访问权。要在c#中获得大致相同的行为,您可以使用组合protected internal,其中包括protectedinternal,授予对派生类的访问权限以及对同一程序集中的类的访问权限。

protected表示该事物对类本身和派生的可用。

我不会为命名空间发狂。如果你有很多东西要放进去,而且这些东西足够不同,它们就很有用。下面是一些关于名称空间最佳实践的指导原则。

"protected"表示可以从同一类或派生类访问该成员。但这并不允许同一命名空间的其他成员访问该成员。

你正在寻找的可能是"内部的",这意味着成员可以被同一程序集中的代码访问。

顺便说一下,您可以从不同的程序集向同一名称空间添加更多成员。