班级与公共班级

58 c# class public

有什么区别:

namespace Library{
    class File{
        //code inside it
   }
}
Run Code Online (Sandbox Code Playgroud)

和:

namespace Library{
   public class File{
       //code inside it
   }
}
Run Code Online (Sandbox Code Playgroud)

那么公共课班级之间的区别是什么?

dri*_*iis 63

没有指定public类隐式internal.这意味着该类仅在同一个程序集中可见.指定时public,该类在程序集外部可见.

它还允许internal显式指定修饰符:

internal class Foo {}
Run Code Online (Sandbox Code Playgroud)

  • 装配是什么意思@driis?您能解释一下在同一集会内与在同一集会外意味着什么吗? (3认同)

Jon*_*nna 22

前者相当于:

namespace Library{
    internal class File{
        //code inside it
   }
}
Run Code Online (Sandbox Code Playgroud)

private对于classes和structs(方法,属性,字段,嵌套类和嵌套enums)的internal成员以及namespaces的直接成员,所有可见性默认为最不可见 - 因为它们不能是私有的.

internal 意味着同一个程序集中的其他代码可以看到它,但没有别的东西(禁止朋友程序集和使用反射).

这有两个原因:

  1. 无论如何,你应该有意识地使用尽可能少的可见性,以加强你的封装.
  2. 如果他们违约,public你可能会意外地公开一些私密或内部的东西.如果你不小心做了一些不够明显的东西,你会得到一个明显的编译错误并修复它.如果你不小心把某些东西看得太可见,你就会在代码中引入一个不会被标记为错误的缺陷,这将是一个突破性的修改,以便以后修复.

通常认为使用访问修饰符明确更好的样式,在代码中更清楚,正是发生了什么.