黑马程序员技术交流社区

标题: 不是很明白internal修饰的成员的可访问范围 [打印本页]

作者: 昕☆Rainbow    时间: 2014-6-28 19:54
标题: 不是很明白internal修饰的成员的可访问范围
本帖最后由 昕☆Rainbow 于 2014-6-30 19:42 编辑

是同一个程序集中可以访问?程序集的概念是什么呢?

作者: 许庭洲    时间: 2014-6-28 20:52
1. 程序集是任何 .NET Framework 应用程序的基本构造块;
   例如,在生成简单的 C# 应用程序时,Visual Studio 创建一个单个可移植可执行 (PE) 文件形式的程序集,明确地说就是一个 EXE DLL
2. 程序集可以包含一个或多个模块;
   例如,计划较大的项目时,可以让几个各个开发人员负责单独的模块,并通过组合所有这些模块来创建单个程序集。

作者: 天佑の清清    时间: 2014-6-28 22:05
internal与public,private,protected都是访问权限修饰关键字,
它代表它所修饰的类只能在该类所在的程序集中其它类所引用,即在这个程序集中,
它相当于public,出了这个程序集,它就相当于private.
程序集Assembly包括一个或多个模块和资源文件的逻辑分组。它是可重用,安全性和版本控制的最小单位。
程序集就是我们运行编译后产生的dll文件或者exe文件。它里面所包含的MSIL中间代码会在执行的时候,被CLR的JIT编译器根据本特定机器的实际情况进行特定的进一步优化,从而编译成相应的机器码。
作者: Cacerine    时间: 2014-6-28 22:29
额,还没有学到这里,从百度找了一个答案,你可以看看,是否对你有帮助
对于一些大型的项目,通常由很多个DLL文件组成,引用了这些DLL,就能访问DLL里面的类和类里面的方法。
比如,你写了一个记录日志的DLL,任何项目只要引用此DLL就能实现记录日志的功能,这个DLL文件的程序就是一个程序集。
如果你记录日志的程序集是这么定义的
  1. namespace LogerHelper
  2. {
  3.     internal class aa
  4.     {
  5.          public void bb()
  6.          {
  7.              return "";
  8.          }
  9.     }

  10.     public class Write
  11.     {
  12.         public void WriteIn(string content)
  13.         {
  14.             class x = new aa();   
  15.             x.bb();
  16.         }
  17.     }
  18. }
复制代码

当另一个项目引用了此DLL
它可以这么访问  
  1. LogerHelper.Write x = new LogerHelper.Write();
  2. x.WriteIn("");
复制代码

但不可以这么访问
  1. LogerHelper.aa x = new LogerHelper.aa();
  2. x.bb();
复制代码

这就叫,只能在程序集中访问
作者: SlssSilver    时间: 2014-6-29 00:51
internal,成员只能由定义它的程序集(项目)内部的代码访问.
protected,成员只能由类或派生类中的代码访问.
private,成员只能由类中的代码访问
public,公共访问权限,成员可以由任何代码访问.
作者: 昕☆Rainbow    时间: 2014-6-29 19:41
Cacerine 发表于 2014-6-28 22:29
额,还没有学到这里,从百度找了一个答案,你可以看看,是否对你有帮助
对于一些大型的项目,通常由很多个D ...

明白点了。。引用DLL文件也就是在开头写using吗?
作者: Cacerine    时间: 2014-6-30 00:10
本帖最后由 Cacerine 于 2014-6-30 00:11 编辑
昕☆Rainbow 发表于 2014-6-29 19:41
明白点了。。引用DLL文件也就是在开头写using吗?

方法是 “在解决方案管理器” - “解决方案”(或项目) 中的任意地方, 右键“添加引用”,“浏览”,选择你需要调用的dll文件,确定即可
添加完了引用,现在如何调用呢?
如果有命名空间则引入命名空间,比如你的y。dll里面,是a命名空间,有一个b类,然后有一个无参数静态方法c
那么调用方法就是a.b.c(),跟你普通的使用类是一样的


作者: liangdmaster    时间: 2014-6-30 18:06
嗯,我也补充一下知识
作者: 向晓伟    时间: 2014-6-30 22:32
Cacerine 发表于 2014-6-30 00:10
方法是 “在解决方案管理器” - “解决方案”(或项目) 中的任意地方, 右键“添加引用”,“浏览”,选 ...

涨知识了!
作者: 追梦无悔    时间: 2014-7-4 10:29
dll 或 exe
作者: 麦田怪圈    时间: 2014-7-7 18:14
路过学习了!
作者: 绿箭    时间: 2014-7-12 20:15
.netFramwork的类库和模块后缀是dll的文件




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2