C#泛型本身的理解和总结

万事开头难,今天先从随笔开始,记录工做中平时不太注意到的知识点。今天开始说下泛型。安全

泛型在咱们项目中非常常见,使用很普遍,我觉的它有如下几个优势。性能

1.安全性。spa

2.性能。code

3.二进制代码的重用。blog

4.代码的扩展。编译器

下面从代码方面分析下这些优势。string

1.安全性。it

这段代码只有运行起来的时候才会报错,  秉着错误得先发现的原则,这种写法不合适。编译

1  var text = new ArrayList();
2  text.Add(44);
3  text.Add("mystring");
4  foreach (int item in text)
5  {
6      Console.Write(item);
7  }

若是换成泛型,试试看。class

1 var list = new List<int>();
2 list.Add(44);
3 list.Add("mystring");//会编译器会直接报错

2.性能。

一样使用非泛型集合,添加数据,并输出。    能够看出,添加进集合进行了装箱操做,赋值的时候又进行了拆箱操做。一装一拆性能就会影响性能。

1  var text = new ArrayList();
2  text.Add(12);
3  int a = (int)text[0];

若是换成泛型,试试看。   泛型定义为int,int类型在编译器动态生成的类中使用,不会进行装箱和拆箱的操做。

1 var list = new List<int>();
2 list.Add(44);
3 int b = list[0];

3.二进制代码的重用。

泛型能够使用多个类型来进行实例化。

1 var list = new List<int>();
2 list.Add(44);
3 var str = new List<string>();
4 str.Add("str");
5 var Studentclass = new List<Student>();
6 Studentclass.Add(new Student());

4.代码的拓展。

对不一样的类型的泛型,进行实例化的时候,程序编译的时候,若是是引用类型,全部实例化的类都共用同一个本地类相同的实现代码,若是是值类型,会为每一个值类型实例化一个新类。

 

第一次开始记录,有错误的地方,但愿你们多多包涵。

相关文章
相关标签/搜索