类与公共类(Class vs. Public Class)

2019-06-28 06:22发布

是什么区别:

namespace Library{
    class File{
        //code inside it
   }
}

和:

namespace Library{
   public class File{
       //code inside it
   }
}

那么,什么将是公共类之间的区别?

Answer 1:

如果不指定public类是隐含internal 。 这意味着,类只在同一组件内可见。 当您指定public ,该类是组装外部可见。

它也允许指定internal明确修改:

internal class Foo {}


Answer 2:

前者相当于:

namespace Library{
    internal class File{
        //code inside it
   }
}

所有能见度默认为最不可见的可能- private的成员class ES和struct S(方法,属性,字段,嵌套类和嵌套enum S)和internal进行的直接成员namespace S,因为他们不能是私有的。

internal是指在同一程序可以看到其他代码,但没有别的(不包括朋友组件和使用反射)。

这是有道理的,原因有二:

  1. 你应该有意识地使事情用最少的知名度可能,无论如何,以加强你的封装。
  2. 如果他们默认为public ,你可能会不小心让一些市民,应该是私有或内部。 如果你不小心使一些不够明显,你会得到一个明显的编译错误并修复它。 如果你不小心让东西太多可见你介绍一个漏洞到您的代码不会被标记为错误,而这将是一个重大更改后修复。

它通常被认为是更好的风格要明确你的访问修饰符,代码更清晰,只是到底是怎么回事。



Answer 3:

默认情况下,所有class ES(和所有类型的这个问题)是internal ,所以为了让他们从外部(没有这样的东西访问InternalsVisibleToAttribute ),你必须让他们public明确。



文章来源: Class vs. Public Class
标签: c# class public