1. 书上说“分部类允许将类代码放在多个文件中,所有部分都必须有相同的可访问性,如都是public、private。

可是VS创建Windows Form,自动产生的代码中,partial类为何有不同的访问限定?
Form1.Designer.cs中是:partial class Form1
Form1.cs中是:        public partial class Form1 : Form
2.我创建一个控制台项目,program.cs中有一个partial类A,然后添加一个类文件class1.cs,在class1.cs中写部分类A的一个方法。在VS中调试通过。然后我用csc将class1.cs编译成class1.dll。在VS中将class1.cs删去,并引用class1.dll。这时再调试,就不能通过。说找不到写在class1中的partial类A的那个方法。是不是我对partial类的理解哪里有误啊?

解决方案 »

  1.   

    Partial类不能部分编译。你写了两个文件声明了都是部分类,编译器会把这两个部分类合并为一个整体,你现在单独编译当然找不到了。
      

  2.   


    你的意思是要 csc /target:library programe.cs class1.cs 吗?另外我第一个问题,有人帮解释一下吗?
      

  3.   

    Form1.Designer.cs中是:partial class Form1 
    Form1.cs中是:        public partial class Form1 : Form 访问限定是相同的,因为默认为Public
      

  4.   


    这就叫误人子弟!首先,类的默认修饰符是internal,而非public其次,引用楼主:
    partial类为何有不同的访问限定?这根本不是访问权不同的问题,在C#中,允许你只在某一个partial里写修饰符,而在另外的地方省略
    类似的有:如果分部类继承自某一基类,你只需要在一处明确指明,其他partial的地方都可以省略当然,如果你愿意,你也可以在每一个partial都明确指明修饰符,甚至可以在某个地方指明一种修饰符,在另一个地方指明另一种修饰符,前提是不能发生冲突
      

  5.   

    如果不加访问修饰符,类的访问级别自动为public
      

  6.   

    你sb啊,有错说错,自以为是个nb#sb啊;
    纠正:类的默认可访问性是 internal
      

  7.   


    lerit 你等级升得慢快的嘛,说明是个活跃分子,不过还是应该向xochenlin学习啊。
      

  8.   


    UP
    vs自动生成的Designer.cs中默认为internal