惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Google DeepMind News
Google DeepMind News
C
Check Point Blog
J
Java Code Geeks
腾讯CDC
Martin Fowler
Martin Fowler
MongoDB | Blog
MongoDB | Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
博客园 - 三生石上(FineUI控件)
Apple Machine Learning Research
Apple Machine Learning Research
大猫的无限游戏
大猫的无限游戏
Engineering at Meta
Engineering at Meta
罗磊的独立博客
Last Week in AI
Last Week in AI
B
Blog
IT之家
IT之家
S
SegmentFault 最新的问题
D
DataBreaches.Net
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
GbyAI
GbyAI
博客园 - 聂微东
U
Unit 42
有赞技术团队
有赞技术团队
Y
Y Combinator Blog
MyScale Blog
MyScale Blog

博客园 - 探索

字符串倒序算法最优 - 探索 - 博客园 extern关键字 C++的基本概念和术语 关于软件汉化 郁闷! 命名空间语法 c++指针问题 - 探索 - 博客园 c#中重写(覆盖)和隐藏类的方法 最近好累呀~~~~ Vigenere加密算法类 人工智能规则正向演绎系统简单程序演示(c++) 爱情与婚姻 我的论坛刚刚建立起来,希望大家能支持一下~~~ oracle数据库中数据控制 初学者读书笔记数据库篇(一) C#中只允许产生一个类的实例的方法 今天申请了一个Gmail~~ 关于对SQL Server连接访问问题 今天罪孽深重~~~
对程序集的理解
探索 · 2005-06-06 · via 博客园 - 探索

   一直以来,学习c#有个问题困惑着我。到底是程序集,用vs.net生成的一个项目就是一个程序集吗?
直到几天,我终于弄清楚了。谢谢,c# Primer Plus这本书,有它真好。
   一个.cs的源文件构成了一个编译单元,而一个或几个编译单元可以生成一个程序集。程序集可以是.dll文件,也可以是.exe文件。一个编译单元可以引用程序集,来生成另外一个程序集。
如果这里有两个编译单元:
类1(a.cs):

 1using System;
 2namespace a1
 3{
 4internal class myClass
 5{
 6public void print()
 7{
 8Console.WriteLine("this is myClass");
 9}

10}

11}

类2(b.cs):

 1using a1;
 2using System;
 3namespace a2
 4{
 5    public class myClass2
 6    {
 7        public static void Main()
 8        {
 9            myClass c1=new myClass();
10            c1.print();
11        }

12    }

13}

上面类1定义成了internal,如果你使用一下的命令:
csc /t:library a.cs
csc /r:a.dll b.cs
然后运行b.exe,这样是不能类1的,因为上面的命令把a.cs编译成了一个程序集,最后又把b.cs定义成了一个程序集,由于类1是internal修饰的,所以类2是不能访问类1的。

如果你使用一下命令:
csc a.cs b.cs
那么运行b.exe,这样是可以正常的运行的,因为你执行上面的命令是把a.cs b.cs生成了一个程序集,在同一个程序集合用,类2是可以访问类1的。