首页 > 其他 > 详细

C# 泛型与反射

时间:2014-03-23 23:25:14      阅读:487      评论:0      收藏:0      [点我收藏+]

1.泛型集合:

List<T>   Dictionary<K,V>  IQueryabl<T>

2.为什么不提倡使用ArrayList的原因?

2.1是因为 ArrayList内部存储数据的是一个 object数组,如果在ArrayList中存储值类型数据,会出现装箱和拆箱,从而影响服务器性能。

2.2类型安全问题:因为ArrayList 中所有元素都以object存储,那么在取出元素使用时,也是作为 object 类型取出,需要做转型;如果不转型,则容易出现类型错误!

3.泛型:就是一个类型占位符

3.2泛型方法

3.2.1自定义泛型方法

在泛型方法中,形参、返回值、方法体内部,都可以使用泛型。

3.2.2IEnumerabl<T>内置泛型方法

a.方法Cast<T>()

b.方法ToList<T>()

c.方法 OfType<T>()

3.3带泛型的类和带泛型的方法的区别:

泛型占位符使用的范围不一样:

泛型方法的泛型占位符只能在方法作用域中使用(形参、返回值、方法体)

带泛型的类:使用范围就是整个类的作用域。

 

反射

1.程序集是什么:就是源代码编译成 IL后的中间代码文件。

2.当程序执行时,

2.1虚拟机会从硬盘中加载程序集的代码内容,然后按照代码的语法解析,获取信息,并为每个类单独创建一个Type类的对象,用来存储类的信息(成员变量、构造函数、方法............)

复习反射:

Assembly程序集对象,就相当于将程序集文件内容解析后存放在内存里的位置。

说到底,就是一个程序信息的容器,不能直接作为应用程序运行。如果要把Assembly运行起来,需要使用应用程序域。

 

1.获取 Type 对象的方式:

 1.1 typeof 关键字: Type t1 = typeof(Person);

 1.2GetType方法:   Type t2 = p1.GetType();//Person p1=new Person();

注意:两种方式获取的 Type对象相等,就是同一个(t1==t2)

 

2.特性 Attribute

自定义特性类:继承于 Attribute类;

类名以Attribute结尾;

使用时,可以省略类后面的Attribute

 

关于使用反射调用某个对象里的成员字段和方法:

以前我们是通过对象.字段  和对象.方法的方式来运行;

而用反射可以字段.对象  和方法.对象的方式来运行;

Person p = new Person();

public void InvokePerson(Person pPara)

{

  Type pType = typeof(Person);

  FieldInfo fInfo = pType.GetField("age");

  string strAge = fInfo.GetValue(pPara).ToString();

  MethodInfo mInfo = pType.GetMethod("SayHi");

  mInfo.Invoke(pPara,null);

}

 

泛型可空类型:

委托的本质:

就是一个类,继承于 MulticastDelegate类(多播委托),继承于 Delegate类(委托)。

C# 泛型与反射,布布扣,bubuko.com

C# 泛型与反射

原文:http://blog.csdn.net/songjuntao8/article/details/21889379

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!