C#入门经典(第6版)阅读笔记(第三篇)(泛型)

目录#####第十二章 泛型****#####第十二章 泛型个人理解,泛型就是在创建时以改变类的类型参数和函数的类型参数来提高代码的重用度。例如:(传统的定义方式)public class SortHelper { public void BubbleSort(int [] array) { } }改用泛型://在类型名称的后面加了一个尖括号,使用这个尖括号来传递占位符,也就是类型参数。public class SortHelper<T> { public void BubbleSort(T[] array){ // 冒泡排序方法实现体 } }泛型的使用:sorter = new SortHelper<int>(); int[] array = { 8, 1, 4, 7, 3 }; sorter.BubbleSort(array);泛型的使用,此时只需要在实例化的地方动手脚就可以了。如果是其他类型的排序,此时只需要将上述代码中的int改掉即可。如果是使用传统的函数构造,就需要重写代码来进行函数功能的复用。扩展:public class SortHelper { public void BubbleSort(object [] array) { } }此处将类型变成object类型,此时它便可以接受任何类型。但是,处理值类型时,会出现装箱、折箱操作,这将在托管堆上分配和回收大量的变量,若数据量大,则性能损失非常严重。在处理引用类型时,虽然没有装箱和折箱操作,但将用到数据类型的强制转换操作,增加处理器的负担。 ######1. ?? 运算符下面两个表达式的作用是相同的>op1 ?? op2op1 == null?op2:op1######2 泛型概念  泛型是公共语言运行时和编程语言提供的一种机制,它支持另外1种形式的代码重用,也就是算法重用.  泛型包含泛型类,泛型接口,泛型委托,泛型方法,并非只包含简单的泛型类.在C#中,其他例如,属性,索引器,事件,操作符方法,构造器本身不能有类型参数T.  T(类型参数),它的目的在于指明它操作的是一个未指定的数据类型,在源代码中能够使用数据类型的地方都可以使用它.######3 为什么要使用泛型  通过使用泛型,可以极大地提高代码的重用度,同时还可以获得强类型的支持,提升了应用程序的性能,避免了隐式的装箱、拆箱,以及运行时的类型转换错误。######4 变体4.1 协变public interface IMethaneProducer<out T>{}4.2 抗变public interface IMethaneProducer<in T>{}****************************************

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,099评论 19 139
  • importUIKit classViewController:UITabBarController{ enumD...
    明哥_Young阅读 3,926评论 1 10
  • object 变量可指向任何类的实例,这让你能够创建可对任何数据类型进程处理的类。然而,这种方法存在几个严重的问题...
    CarlDonitz阅读 938评论 0 5
  • 泛型代码可以确保你写出灵活的,可重用的函数和定义出任何你所确定好的需求的类型。你的可以写出避免重复的代码,并且用一...
    iOS_Developer阅读 816评论 0 0
  • 泛型(Generics) 泛型代码允许你定义适用于任何类型的,符合你设置的要求的,灵活且可重用的 函数和类型。泛型...
    果啤阅读 706评论 0 0