比如在System.A命名空间下存在a1,a2,a3......an.共N个类
1:是不是a1,a2,a3......an .这N个类都是有一个程序集(比如ass.dll)来实现?
  还是可以有多个程序集来实现?
2:ass.dll这个程序集除了实现以上的类外,能否也能实现System.B命名空间下的类?
3:我想第2个问题的答案是能的。但是为什么.net要这样组织呢?
   为什么不是一个程序集就仅仅实现一个命名空间下所有的类呢?大家怎么理解的?
4:写了个dll文件,asp.net调用的这个dll的时候,在解决方案里需要添加这个dll的引用吗?
   还是只需要把这dll文件放bin目录就行了?
5:namespace test
{
public class mybase
         { }

class Class1:mybase
{
static void Main(string[] args)
{
         mybase my=new mybase();
Class1 c=(Class1)my;

}
}
}
为什么编译时不会出现错误?
我理解是编译器编译Class1 c=(Class1)my;这句时应该可以
确定my对象只能是Class1类或Class1类的子类,但是这里my对象却是Class1类的父类,
显然不符合要求,编译器怎么不能发现这错误,而只能到运行的时候才错误?
把Class1 c=(Class1)my;换成Class1 c=my;编译时就通不过了
我想问的是编译的时候编译器到底做了什么?怎么就不能发现这错误呢?
大家是怎么理解的?谢谢指教。
-----------------------------------------------------------------

解决方案 »

  1.   

    1:是不是a1,a2,a3......an .这N个类都是有一个程序集(比如ass.dll)来实现?
      还是可以有多个程序集来实现?
    可以是多个,但是你要放到不同的虚拟目录中去阿
    2:当然可以,
    3:这个嘛,dll一向如此啊
    4:需要添加引用
    5:因为强制类型转换在运行时才发生,所以Class1 c=(Class1)my;没有语法错误,也没有语义错误。
    但是Class1 c=my;明显的你不能在不同的实例类型之间赋值。
      

  2.   

    1:是不是a1,a2,a3......an .这N个类都是有一个程序集(比如ass.dll)来实现?
      还是可以有多个程序集来实现?
    可以是多个,但是你要放到不同的虚拟目录中去阿
    2:当然可以,
    3:这个嘛,dll一向如此啊
    4:需要添加引用
    5:因为强制类型转换在运行时才发生,所以Class1 c=(Class1)my;没有语法错误,也没有语义错误。
    但是Class1 c=my;明显的你不能在不同的实例类型之间赋值。sorry,用错马甲!
      

  3.   

    4:C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322目录以下引用成A目录。
    (1):我试着把一个db.cs(关于操作数据库的)编译成db.dll.
    默认生成db.dll的路径是A目录,然后我在解决方案里添加这个db.dll的引用,删除了db.cs,程序可以运行,并自动在bin 目录下生成db,dll文件。
    (只是提示:已在多处定义“book_ms.db”;使用“c:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\db.dll”中的定义
     但是不影响程序的运行!)怎么回事?
    (2):不考虑(1)情况下,我把编译生成的db.dll不是放在它的默认路径下,比如生成在e:\db.dll
    在解决方案里添加这个db.dll的引用------运行程序就说在A目录下找不到文件!怎么生成的dll只能放A目录下的啊?郁闷。
    程序只能在A目录下查找这dll文件吗?
    5:看运行的结果我也知道强制类型转换是在运行的时候进行的,只是在问编译的时候怎么就不能确定这错误呢(按照我自己是思维是编译时可以检查这错误的?编译器编译的时候具体都做了些什么?)
    再次谢谢大家?
      

  4.   

    沉的真快啊!!
    UP UP UP