2010-09-21 94 views
132

我试图找到C#的各个方面的默认可见性的参考。类类型,字段,方法,枚举等C#类和成员(字段,方法等)的默认可见性?

有人能与他们的默认可见性(即无前缀修饰)一起提供的这些名单?

+0

可能重复http://stackoverflow.com/questions/3675575/default -access-modifier-in-c) – 2010-09-21 19:18:00

+8

我不认为它是重复的......该问题是特定的(这是什么默认值?),这个是宽泛的(什么是所有默认值?) – WernerCD 2010-09-21 20:25:52

回答

206

所有的你正在寻找的信息可以发现herehere(感谢Reed Copsey):

从第一环节:

类和结构是直接宣告命名空间内(换言之,不嵌套在其他类或结构中)可以是公共的或内部的。 如果未指定访问修饰符,则内部为默认值

...

类成员和结构成员,包括嵌套类和结构,访问级别是默认私人。

...

接口默认为内部访问。

...

代表行为像类和结构。默认情况下,它们在命名空间内直接声明时具有内部访问权限,嵌套时具有私有权限。


从第二个环节:

顶级类型,未嵌套在其他类型的,只能有内部或公共可访问性。 这些类型的默认可访问性是内部

而对于嵌套类型:

 
Members of Default member accessibility 
---------- ---------------------------- 
enum   public 
class   private 
interface  public 
struct  private 
+5

里德的信息很好的汇编,但你忘了指定这种访问修饰符也适用于方法。 – Joel 2014-07-26 16:07:54

+2

@Joel你是什么意思?他明确指出“成员”。成员是数据和行为,因此包含方法。 – rism 2015-02-12 08:27:00

+0

如果有任何vb.net开发人员正在看这个,vb是不同的。 vb类成员的默认范围是'Public'。 'Enum'成员也是'Public'。可能不那么容易混淆,因为在你的情况下只使用显式范围,因为机会很高,它会在某些时候被c#开发人员翻译或读取。不幸的是,vb.net中的代码不会为你做这件事。 – toddmo 2015-03-11 15:10:22

-1

默认为private。除非它们嵌套,否则类是internal

+1

不是枚举公共默认? – 2010-09-21 19:14:59

+4

@Jay:除非它们嵌套。 @Ryan:不,非默认的嵌套枚举是内部的。 – 2010-09-21 19:18:07

+2

@Ryan:枚举成员默认是公共的,但枚举本身是内部的。 – 2010-09-21 19:20:34

7

默认情况下,一类访问修饰符是internal。这意味着,一个类可以在同一个程序集中访问。但是,如果我们希望从其他程序集访问该类,那么它必须公开。

+17

此信息已在其他答案中。你应该只回答一个问题,特别是像这样的老问题,当你有额外的信息提供或者你认为其他答案是错误的。无论如何,欢迎来到Stack Overflow。 – Gorpik 2012-09-27 14:57:40

2

从MSDN:

顶级类型,未嵌套在其他类型的,只能有internalpublic可访问性。这些类型的默认可访问性为internal


嵌套类型,这是其他类型的成员,可以宣布可接近,如下表中所示。

Default Nested Member Accessibility & Allowed Accessibility Modifiers

来源:Accessibility Levels (C# Reference)(12月6日第,2017)

[在C#默认接入改性剂](的