摘要: 这里存在普通的方法Foo和泛型方法Foo,如果直接调用: 则会自动优先匹配对应的非泛型方法。输出如下: 但需要注意的是,这一匹配过程是在编译过程进行的,所以如果是通过其它泛型间接调用。则只会调用对应的泛型方法: 输出如下: 阅读全文
posted @ 2016-08-26 17:40 一只菜鸟猿 阅读(2733) 评论(1) 推荐(0) 编辑
摘要: 例:(引用自Job Log的博客:http://blog.csdn.net/baidu_20993761/article/details/47272597) public delegate TResult Func<out TResult>();// TResult类型是返回值类型public de 阅读全文
posted @ 2016-08-26 17:40 一只菜鸟猿 阅读(713) 评论(0) 推荐(0) 编辑
摘要: 1、父类中有方法a,添加virtua修饰符可声明为虚方法,在子类中可以用override声明后重写方法a。 2、父类中有方法a,在子类中可以有new修饰符声明后隐藏父类方法。 子类重写方法后,对于子类的任何实例,父类的原方法a都已经不存在。 子类隐藏父类方法后,父类的原方法仍然存在,当子类的实例的类 阅读全文
posted @ 2016-08-26 17:40 一只菜鸟猿 阅读(6555) 评论(3) 推荐(1) 编辑
摘要: 1、com为一种规范,使不同语言能在二进制层面上进行交互。 2、dll为ms的一种程序打包文件,使程序的代码能分开打包编译,并能在运行时共享。 阅读全文
posted @ 2016-08-26 17:40 一只菜鸟猿 阅读(316) 评论(0) 推荐(0) 编辑
摘要: 公共语言运行库(.net运行库)即CLR 1、C#先编译为IL,IL为ms的中间语言,IL是平台无关性的。 2、CLR再将IL编译为平台专用语言。 3、CLR在编译IL时为即时编译(JIT) VB、VC++、VF均可编译为IL然后与C#进行交互 阅读全文
posted @ 2016-08-26 17:40 一只菜鸟猿 阅读(632) 评论(0) 推荐(0) 编辑
摘要: 1、==是直接比较值类型的值或引用类型的引用地址,但==不能用于struct,struct只能用equals来比较。==一般情况下与object.equals得到的结果是相等的。 2、ReferenceEquals为Object下的静态方法,用于比较引用地址。因此所有值类型的比较都为false。st 阅读全文
posted @ 2016-08-26 17:39 一只菜鸟猿 阅读(1672) 评论(0) 推荐(0) 编辑
摘要: 以上代码中,同一个地方用了两种方式给对象的属性或字段进行初始化。可以看到,构造函数是最先执行的。即花括号{}里的赋值语句赋的值是对象初始化最终的值。 其实: 阅读全文
posted @ 2016-08-26 17:39 一只菜鸟猿 阅读(13114) 评论(0) 推荐(2) 编辑
摘要: foreach 在编译成IL后,实际代码如下: 即:foreach实际上是先调用可枚举对象的GetEnumerator方法,得到一个Enumerator对象,然后对Enumerator进行while循环的相关操作,然后得到可枚举对象中的每一个值。 可以把可枚举对象中的所有值想像成一个链表,Enume 阅读全文
posted @ 2016-08-26 17:39 一只菜鸟猿 阅读(1653) 评论(0) 推荐(0) 编辑