2017-03-01 86 views
0

我读了几个主题,Google搜索了很多网站,阅读了一些关于“内部”访问修饰符的定义。但仍然令人困惑。我找不到装配的确切定义。.Net程序集和内部访问修饰符的使用

让我们在Visual Studio中假设我有解决方案,其中我有两个项目 -

ProjectA (NameSpaceA), ProjectB (NameSpaceB). 
ProjectA has references of ProjectB. 

Each project has 2 class (.cs) files 
- ProjectA (ClassA1.cs, ClassA2.cs) 
- ProjectB (ClassB1.cs, ClassB2.cs) 

在ClassA1.cs文件我有两个类:A1ClassOne,A1ClassTwo。在所有其他.cs文件中,每个文件只有一个类。

在解决方案每个类是单独的类(没有派生类)

问题:如果A1ClassOne我有法访问修饰符“内部”,然后从该班将可以访问? 以上解决方案示例中的组件含义是什么?整体解决方案或者每个项目都是不同的组件(解决方案中有两个组件)?或者每个类(.cs)文件?如果一个.cs文件中有几个类,该怎么办?

换句话说,我需要解决方案明智的解释汇编。

回答

1

internal意味着你可以“看”它(参考,派生等)从同一总成中的类(.DLL,.EXE)

问题:如果在A1ClassOne我有法访问修饰符 “内部”,然后从哪些类访问?

从是相同的组件,其中,该方法是内的所有类。

以上解决方案示例中的汇编代表什么意思?整体解决方案或者每个 项目是不同的组件(解决方案中的两个组件)?或者每个 类(.cs)文件?如果一个.cs文件中有几个类,该怎么办?

.DLL是一个程序集。 .EXE也是如此,通常对应于一个项目,是的。

ProjectA (NameSpaceA) 
    - ref ProjectB 
    - ClassA1.cs 
     - A1ClassOne 
      - internal Method1 
     - A1ClassTwo 
    - ClassA2.cs 
ProjectB (NameSpaceB) 
    - ClassB1.cs 
    - ClassB2.cs 

大会 'A' 是A1ClassOneA1ClassTwo。可以从他们访问Method1

组件'B'将是在ClassB1和ClassB2文件中定义的所有类。他们无法访问Method1

+0

那么,我的项目中的所有类都可以访问类的内部成员?但是,如果我的解决方案中只有一个项目,内部和公共之间有什么区别。通常在大多数情况下,一个解决方案中只有一个项目。 –

+0

不同之处在于,当您编译DLL时,有人可以稍后将其添加为其项目的引用。你的'内部'类/方法对他们来说是不可见的。公众的会是。想象一下你的DLL是你想要提供给其他人的库。你想暴露一切吗? –

+0

感谢您的详细解释。从源文件的角度来看,我无法理解物理.exe程序集的概念。现在很明显。 –