比如在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:是不是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;编译时就通不过了
我想问的是编译的时候编译器到底做了什么?怎么就不能发现这错误呢?
大家是怎么理解的?谢谢指教。
-----------------------------------------------------------------
解决方案 »
- 在做论坛遇到的难题,如何调出版主所管理的帖子?
- 利用Linq怎么写查询后Gridview的自定义分页问题?
- 在asp.net中有没有这种控件
- 屏幕尺寸测试(说不清楚,来看看吧)
- CrystalDecisions.CrystalReports.Engine.LogOnException: 登录失败
- 求助:Namespace的具体内容,还有在cs文件中写using System.^^^^^^^的问题
- 你们一般做菜单是怎么做的?都用什么控件?用什么分隔?总之就是:一般都怎么做 :)
- 千年等一回、、我已等了千年
- 我的OLEDB数据源是INTERNET上的一个EXCEL文件………………
- 关于页面跳转的问题
- ASP.NET项目外包,只限上海团队
- 在asp.net中如何调用oracle的存储过程
还是可以有多个程序集来实现?
可以是多个,但是你要放到不同的虚拟目录中去阿
2:当然可以,
3:这个嘛,dll一向如此啊
4:需要添加引用
5:因为强制类型转换在运行时才发生,所以Class1 c=(Class1)my;没有语法错误,也没有语义错误。
但是Class1 c=my;明显的你不能在不同的实例类型之间赋值。
还是可以有多个程序集来实现?
可以是多个,但是你要放到不同的虚拟目录中去阿
2:当然可以,
3:这个嘛,dll一向如此啊
4:需要添加引用
5:因为强制类型转换在运行时才发生,所以Class1 c=(Class1)my;没有语法错误,也没有语义错误。
但是Class1 c=my;明显的你不能在不同的实例类型之间赋值。sorry,用错马甲!
(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:看运行的结果我也知道强制类型转换是在运行的时候进行的,只是在问编译的时候怎么就不能确定这错误呢(按照我自己是思维是编译时可以检查这错误的?编译器编译的时候具体都做了些什么?)
再次谢谢大家?
UP UP UP