zoukankan      html  css  js  c++  java
  • C#泛型自己的理解和总结

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

    泛型在我们项目中很是常见,使用很广泛,我觉的它有以下几个优点。

    1.安全性。

    2.性能。

    3.二进制代码的重用。

    4.代码的扩展。

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

    1.安全性。

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

    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  }

    如果换成泛型,试试看。

    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.代码的拓展。

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

    第一次开始记录,有错误的地方,希望大家多多包涵。

  • 相关阅读:
    Manage by Xcode
    CrashLog查看
    关于NSDateFormatter的格式dd是月天,DD是年天
    【转】 XCode的一些调试技巧
    应用程序互相跳转
    【转】如何将TapkuLibrary框架添加到Xcode4工程项目中
    NSString initWithBytes: 有最大值限制
    在一个workspace中的 各个工程 最好设置一致
    从桌面应用自动化测试看移动应用自动化测试
    基于Android平台应用程序的关键字驱动自动化测试 – 理论、工具和实践
  • 原文地址:https://www.cnblogs.com/xiaobaicode/p/11866546.html
Copyright © 2011-2022 走看看