摘要:
“类型安全”简单说来就是:没有泛型之前,如果你把int,string,class类型都通过Add()方法添加到一个集合类中,这样明显不可以的,但是编译器在编译时却发现不了这个问题,非得要执行是才报错。有了泛型之后,如果你把string添加到List<int>中,那么在编译期间,IDE就会给你报错。 //以下代码会在运行时出现错误ArrayList list = new ArrayList();list.Add(4);list.Add("myString");list.Add(new MyClass);foreach(int item in list){ Cons 阅读全文
摘要:
[原] 题记:当我们平时需要使用到集合类时,我们会发现类的头部导入了这个命名空间:System.Collections.Generic(这其实是泛型的英文名称)。 因为我没有使用过CLR1.0,所以之前对微软命名空间的划分有点恼火。既然是集合类,干嘛不直接放在System.Collections里。当看了泛型之后才明白其中的缘由。 在CLR1.0中,集合类是没有实现泛型的(当时,泛型还没有出生呢),到了CLR2.0时,引入了泛型的概念,于是微软把原先的集合类重写了一边,以实现泛型。所以才有了现在的System.Collections.Generic这个命名空间。 之所以说泛型提高了性能,就在于 阅读全文
摘要:
[原] 泛型是CLR2.0中的新特性。 场景: 在CLR1.0中,如果要创建一个灵活的类或方法,但是该类或方法在编译期间并不能确定所使用的是什么类。 方案: 要解决这种问题,我们必须以Object类为基础。 弊端: 比如现在有一个方法:public string doSomething(Object item){ ....} 这个方法既可以传进引用类型,也可以传入值类型。(在设计这个方法时,我们不能确定参数到底是引用类型,还是值类型。即使知道是引用类型,那么使用的是什么类,我们也不能 知道。所以我们把这个参数定义为Object) 从表面上来看,这种解决方案很美好,至少我实现了需求(编译期间无法 阅读全文