摘要: 1.DEMO 使用匿名类型: 这个会输出什么呢?是someType的类型完全限定名吗?非也...看图: 我们都知道Console.WriteLine会去调用参数的ToString方法,那么可以肯定匿名类型someType重写了ToString方法。那么如果我再上面的基础上再加上一个匿名类型,只不过把 阅读全文
posted @ 2011-03-27 19:01 Timetombs 阅读(627) 评论(0) 推荐(0) 编辑
摘要: 1.对象初始化器 首先声明一个类Person: 初始化它并调用它: 这是编译器的一个小技巧:IL代码显示它和一般的初始化操作效果完全相同。{}里面出现的必须是共有的成员,字段或者属性。 可以支持对象初始化器的类型要满足一个条件是要有一个公有的无参的构造函数。 2.集合初始化器 这个有必要看看IL代码 阅读全文
posted @ 2011-03-27 16:28 Timetombs 阅读(1822) 评论(0) 推荐(1) 编辑
摘要: 1.DEMO var关键字,用来声明并初始化局部变量。编译器根据=右边的语句推断出变量实际的类型。 所以使用var的要求就是右边的语句必须可以让编译器推断出实际的类型。所以=号右边是必须要有值的,即是必须要初始化,不能只是声明。 但是有些不便于阅读代码了。于此同时,C#3.0的出现另一个新特性[匿名 阅读全文
posted @ 2011-03-27 15:16 Timetombs 阅读(770) 评论(0) 推荐(0) 编辑
摘要: 1.从DEMO开始 先看一个扩展方法的例子: 为一个类型扩展一个方法如此只简单,但是它究竟为我们做了什么呢,为什么我可以调用的AddToOldNum方法?还是让我们从IL代码层面来看看吧。 2.扩展方法剖析 这里是上面代码编译的IL: 发现它和一般的静态方法没什么区别,唯一不同的是多了一行调用[Sy 阅读全文
posted @ 2011-03-27 14:28 Timetombs 阅读(720) 评论(0) 推荐(0) 编辑
摘要: 一个简单的C#从控制台程序代码如下: 一行一行说起吧: 引入命名空间,其中本程序只用到了System下的Console静态类。并未使用System.Text命名空间,所以编译器不会把System.Text这个东东也塞到编译后的IL中。如果看着不顺眼的话【选择全部using行,右键》组织using》移 阅读全文
posted @ 2011-03-27 14:05 Timetombs 阅读(880) 评论(0) 推荐(0) 编辑