前言 为什么要把反射和泛型放在一起讲呢,这里是处于个人对C#的一个很棒的观感,因为C#的反射是可以获取泛型里的元素的,而不像Java一个让我比较难受的地方就是Java的泛型实际编译的时候会擦除类型信息。 那么问题来了,什么是泛型,什么又是反射呢? 泛型 请原谅我先介绍泛型,因为没有泛型基础 ...
前言:前面两章介绍了C 的两个常用技术:C 基础系列 反射笔记和C 基础系列 Attribute特性使用。这一章来总结下C 泛型技术的使用。据博主的使用经历,觉得泛型也是为了重用而生的,并且大部分时候会和反射一起使用。这次还是打算围绕WWH 即What Why How 来讲解。 什么是泛型:通过参数化类型来实现在同一份代码上操作多种数据类型。利用 参数化类型 将类型抽象化,从而实现灵活的复用。怎么 ...
2015-07-24 11:28 0 7263 推荐指数:
前言 为什么要把反射和泛型放在一起讲呢,这里是处于个人对C#的一个很棒的观感,因为C#的反射是可以获取泛型里的元素的,而不像Java一个让我比较难受的地方就是Java的泛型实际编译的时候会擦除类型信息。 那么问题来了,什么是泛型,什么又是反射呢? 泛型 请原谅我先介绍泛型,因为没有泛型基础 ...
0. 前言 这篇文章延续《C# 基础知识系列- 5 反射和泛型》,继续介绍C#在反射所开发的功能和做的努力。上一篇文章大概介绍了一下泛型和反射的一些基本内容,主要是通过获取对象的类型,然后通过这个类型对象操作对象。这一篇介绍一个在反射中很重要的内容:特性,以及上一篇未完成的内容——泛型在反射 ...
泛型的抗变和协变是在.NET4.0中才增加, 这对之前的接口的一个不错的扩展。抗变和协变是指针对参数和返回值的类型转换。 看了下评论,抗变和协变 在 msdn的翻译是逆变和协变。我先是看C#高级编程第七版的中文版的,所以还是比较习惯抗变和协变。 抗变和协变的在msdn的解释 ...
引言: 前面专题主要介绍了C#1中的2个核心特性——委托和事件,然而在C# 2.0中又引入一个很重要的特性,它就是泛型,大家在平常的操作中肯定会经常碰到并使用它,如果你对于它的一些相关特性还不是很了解,那就让我们一起进入本专题的学习的。 一、泛型的是什么 泛型的英文解释为 ...
是在C#2.0就推出的一个新语法,由框架升级提供的功能。 说明 泛型通过参数化类型实现在同一份代码上操作多种数 ...
泛型委托是委托的一种特殊形式,感觉看上去比较怪异,其实在使用的时候跟委托差不多,不过泛型委托更具有类型通用性。 就拿C#里最常见的委托EventHandler打比方。在.NET 2.0以前,也就是泛型出现以前,普通的事件处理函数都由EventHandler定义,如下: public ...
引言: 在上一个专题中介绍了C#2.0 中引入泛型的原因以及有了泛型后所带来的好处,然而上一专题相当于是介绍了泛型的一些基本知识的,对于泛型的性能为什么会比非泛型的性能高却没有给出理由,所以在这个专题就中将会介绍原因和一些关于泛型的其他知识。 一、泛型类型和类型参数 泛型 ...
引言: 在C# 2.0中泛型并不支持可变性的(可变性指的就是协变性和逆变性),我们知道在面向对象的继承中就具有可变性,当方法声明返回类型为Stream,我们可以在实现中返回一个FileStream的类型,此时就存在一个隐式的转化——从FileStream类型(子类引用)——> ...