C#访问修饰符,用于仅在命名空间内公开类

Jac*_*aco 42 .net c# namespaces

在java中,您具有包级别保护,可确保类仅在包中可用.

C#中的命名空间或多或少类似于包.但是C#没有用于保护命名空间内的类的保护级别.

这有什么特别的原因吗?

das*_*ght 23

没有这样的访问修饰符:最接近的修饰符是internal,但保护单位是类所在的程序集,而不是其名称空间.

有人可能会说,有可能使用相似的控制级别internal,因为这两种限制都会阻止外人访问您库的实现细节.唯一能与之产生影响的人是你,图书馆的作者,你完全可以控制暴露的内容和隐藏的内容.从本质上讲,它意味着如果您不想在其命名空间之外使用类,只需避免使用它; 如果是internal,那么其他人也无法使用该课程.

  • @Jaco如果你想隐藏一个班级,而不是那些为你的班级编写同一个程序集的代码的人,那么这些人被认为是你的同事.如果他们开始使用你的内部课程,你可以走到他们身边并进行一次很好的和平对话,解释使用不适合他们使用的东西的危险:-) (3认同)
  • _"基本上,这意味着如果你不想在其命名空间之外使用一个类,只需避免使用它"_:我总是希望保护自己免受自己的侵害."不使用"的方式比"如果有意志"更容易出错,那就有了办法.你的编译器是你的助手; 帮助他输入(如正确的访问修饰符),以帮助您.如果根本不使用某些东西对单人项目来说就足够了,那么就可以全部公开.作为一般规则:你是你最大的敌人. (3认同)
  • “本质上,这意味着如果您不想在其名称空间之外使用类,只需避免使用它即可” - 按照这个逻辑,我们也不会使用“private”访问修饰符...所以我不同意它: )。即使我是唯一的开发人员,数据隐藏也很重要。想想解决涉及非“私有”数据结构的生产错误。头疼...:) (2认同)