摘要: 先看下面的代码: 编译时可以通过,但运行时却报如下错误:System.InvalidCastException: 指定的转换无效。这是因为,当对一个对象进行拆箱时,转型的结果必须是它原来未装箱的类型。... 阅读全文
posted @ 2010-06-17 13:03 Ritchie(乞戈) 阅读(281) 评论(0) 推荐(0) 编辑
摘要: C#中,当使用常数符号const时,编译器首先从定义常数的模块的元数据中找出该符号,并直接取出常数的值,然后将之嵌入到编译后产生的IL代码中,所以常数在运行时不需要分配任何内存,当然也就无法获取常数的地址,也无法使用引用了。 如下代码: 将其编译成ConstTest.dll文件,并在如下代码中引用此ConstTest.dll文件。 编译运行此Main.exe程序,结果输出为1000。之后将bin... 阅读全文
posted @ 2010-06-17 13:00 Ritchie(乞戈) 阅读(2240) 评论(1) 推荐(1) 编辑
摘要: CLR最重要的一个特性就是类型安全。CLR在运行时总能知道一个对象的类型。我们也可以通过调用GetType()方法,来得到对象的准确类型。因为该方法是一个非虚方法,所以我们不可能利用它来篡改一个类型的信息。(Microsoft.NET 框架程序设计<修订版>p117) 我们定义如下类: 通过如下代码: 我们得到的输出为: 通过以上,应该可以明白“CLR在运行时总能知道一个... 阅读全文
posted @ 2010-06-17 12:53 Ritchie(乞戈) 阅读(257) 评论(0) 推荐(0) 编辑