类、方法、成员、构造函数、委托和接口的默认访问修饰符是什么?
当前回答
top level class: internal
method: private
members (unless an interface or enum): private (including nested classes)
members (of interface or enum): public
constructor: private (note that if no constructor is explicitly defined, a public default constructor will be automatically defined)
delegate: internal
interface: internal
explicitly implemented interface member: public!
其他回答
命名空间级别:internal
类型级别:private
Internal是类的默认访问修饰符。
Private是类成员的默认访问修饰符。
top level class: internal
method: private
members (unless an interface or enum): private (including nested classes)
members (of interface or enum): public
constructor: private (note that if no constructor is explicitly defined, a public default constructor will be automatically defined)
delegate: internal
interface: internal
explicitly implemented interface member: public!
简而言之:尽可能少的访问(参见Jon Skeet的回答)。
长一点的回答:
非嵌套类型、枚举和委托可访问性(可能只有内部或公共可访问性)
|默认|允许声明的访问权限 ------------------------------------------------------------------ 命名空间| public | none(总是隐式公共) Enum | public | public,内部 接口| internal | public, internal 类| internal | public, internal Struct | internal | public, internal 委托|内部|公共,内部
嵌套类型和成员可访问性
| Default | Permitted declared accessibilities ------------------------------------------------------------------ namespace | public | none (always implicitly public) enum | public | All¹ interface | public | All¹ class | private | All¹ struct | private | public, internal, private² delegate | private | All¹ constructor | private | All¹ enum member | public | none (always implicitly public) interface member | public | none (always implicitly public) method | private | All¹ field | private | All¹ user-defined operator| none | public (must be declared public) ¹ All === public, protected, internal, private, protected internal ² structs cannot inherit from structs or classes (although they can, interfaces), hence protected is not a valid modifier
嵌套类型的可访问性取决于其可访问域,该域由成员声明的可访问性和直接包含类型的可访问性域共同决定。但是,嵌套类型的可访问域不能超过包含类型的可访问域。
注意:CIL还提供了受保护的和内部的(与现有的受保护的”或“内部的”相对),但据我所知,这在c#中目前是不可用的。
See:
http://msdn.microsoft.com/en-us/library/ba0a1yw2.aspx http://msdn.microsoft.com/en-us/library/ms173121.aspx http://msdn.microsoft.com/en-us/library/cx03xt0t.aspx (我喜欢微软的网址…)
我想添加一些文档链接。点击这里查看更多细节。
推荐文章
- 实体框架核心:在上一个操作完成之前,在此上下文中开始的第二个操作
- 如何为构造函数定制Visual Studio的私有字段生成快捷方式?
- 如何使用JSON确保字符串是有效的JSON。网
- AppSettings从.config文件中获取值
- 通过HttpClient向REST API发布一个空体
- 如何检查IEnumerable是否为空或空?
- 自动化invokerrequired代码模式
- 在c#代码中设置WPF文本框的背景颜色
- 在c#中,什么是单子?
- c#和Java中的泛型有什么不同?和模板在c++ ?
- c#线程安全快速(est)计数器
- 如何将此foreach代码转换为Parallel.ForEach?
- 如何分裂()一个分隔字符串到一个列表<字符串>
- 如何转换列表<字符串>列表<int>?
- c#对象列表,我如何得到一个属性的和