c# 泛型和IComparable<T>接口
泛型
因为我们在编程中想先不定义数据类型,只想先写逻辑,就可以使用Object类型,
这样我们的逻辑就适用于所有类型,但是,在运行中,Object类型的变量会需要
转换到对应类型,浪费资源,所有出现泛型,来代替object类型的方案。
使用泛型,可以让我们延迟定义数据类型,来编写程序
泛型是一种将逻辑应用到不同数据类型上的机制,可以通过类型替代符
来暂时替代参数的数据类型,这样只需要在编译的时候,编译器会自动
将该替代符编译成对应数据类型来处理
泛型方法:
访问修饰符 返回类型 方法名<T,U>(T 参数,U 参数){
}
我们可以在方法名后使用<类型替代符>来定义一个泛型方法
方法定义好后,在调用泛型方法时,应该在<>括号内填上对应的类型
使用范围:当你的方法适用于所有数据类型的时候,可以使用泛型类型来代替Object类型,以节省资源
泛型类:
访问修饰符 class 类名<T>{
T 成员;
}
类型替代符的作用:
可以让我们先不定义数据类型,只管逻辑,在调用此方法或者此类对象时,才在<>括号里填上对应类型
只有我们这段逻辑或者说这个类结构就可以适用于所有数据类型而且要比object类型节省资源
泛型集合:
在System.Collections.Generic 下的泛型数据结构类
比System.Collections下的Object类型的数据结构类要更安全,性能更好
泛型列表:
List <数据类型> 列表名 = new List<数据类型>(可填写初始长度)
属性:
Count :代表这个列表实际包含多少个元素
Capacity:代表这个列表可以包含多少个元素
方法:
Add :在列表末尾添加一个元素
Remove:删除指定的元素
RemoveAt:删除下标号指定的元素
Contains:检测是否包含这个元素
IndexOf:从头开始查找第一个匹配项的下标号,没找到返回-1
LastIndexOf:从尾开始查找第一个匹配项的下标号,没找到返回-1
Insert:在指定Index的位置,插入这个元素
Reverse:翻转当前列表的排列顺序
Sort:排序
查/改:索引器[下标号]
IComparable <T> 接口:
可以实现Sort对复杂数据类型的排序
让你的类实现ComparaTo<T other>方法
会返回一个int值
其含义: 大于零:对象大于other参数;
小于零:对象小于other参数;
等于零:对象等于other参数;
c# 泛型和IComparable<T>接口的更多相关文章
- 机房重构——泛型和“DataTable”
前言 我们都知道在机房重构的时候,大多数都在用七层进行重构,每一层都依赖实体.所以不管怎么调用,返回的应该是实体参数,这样才符合大多数的逻辑,这样我们试想一下,如果我们要求在U层返回多个实体值,怎么办 ...
- Java泛型学习笔记--Java泛型和C#泛型比较学习(一)
总结Java的泛型前,先简单的介绍下C#的泛型,通过对比,比较学习Java泛型的目的和设计意图.C#泛型是C#语言2.0和通用语言运行时(CLR)同时支持的一个特性(这一点是导致C#泛型和Java泛型 ...
- 泛型和 Any 类型
泛型和 Any 类型 这两个类型看起来很相似,但是一定要小心两者的区别.他们区别在于 Any 类型会避开类型的检查,所以尽量少用最好不用.泛型一方面很灵活一方面也很安全,下面举个例子感受下两者的区别: ...
- java 泛型和object比较
引言 我们使用object和泛型做形参,都是为了让这个方法能接收更多类型的对象,让程序变得更健壮,代码复用率更高.当我们回看自己写的代码时会发现,好像使用泛型的地方使用object也可以,使用obje ...
- C#的泛型和Java的伪泛型
C#的泛型和java的伪泛型,talk is cheap,show me the code C#泛型 下面结果,C#里面会输出false,如果这个还不能真正的说明C#的泛型是真的泛型,那就看下面这 ...
- C#当中的泛型和java中的对比
1.C#中的泛型 先写一个Demo: namespace generic { public class Program { static ...
- 基础篇:深入解析JAVA泛型和Type类型体系
目录 1 JAVA的Type类型体系 2 泛型的概念 3 泛型类和泛型方法的示例 4 类型擦除 5 参数化类型ParameterizedType 6 泛型的继承 7 泛型变量TypeVariable ...
- java中的泛型和sql中的索引
sql中的索引 索引:好处查询的速度快,被删除,修改,不会对表产生影响,作用是加速查询: 一种典型的数据库对象 作用:提交数据的查询效率,尤其对一些数据量很大的表 索引是用来为表服务的 索引是orac ...
- 1.什么是泛型和C#中泛型在Class上的实现
阅读目录 一:什么是泛型? 二:C#中泛型在Class上的实现 一:什么是泛型? 我们在编程的时候需要一个数据类型,但是在刚开始的时候还不确定这个数据类型是怎么样的,或者说对于不同的多个数据类型有 ...
随机推荐
- 牛客网第二场Jfarm(随机化+二维前缀和)
链接:https://www.nowcoder.com/acm/contest/140/J 来源:牛客网 White Rabbit has a rectangular farmland of n*m. ...
- LeetCode刷题 fIRST MISSING POSITIVE
Given an unsorted integer array,find missing postive integer. For example , Given [1,2,0]return 3, a ...
- main 团队项目厨娘:用例图、类图、时序图
团队:main 项目:厨娘 个人用例图
- 1. Django概述
1.1 设计模型 Django,但它附带了一个你可以用python代码描述数据库布局的对象关系映射器. 数据模型语法提供了许多丰富的方法来展现你的模型——到目前为止,它解决了多年来数据库模式问题. 简 ...
- 阶段01Java基础day23多线程
23.01_多线程(多线程的引入) 1.什么是线程 线程是程序执行的一条路径, 一个进程中可以包含多条线程 多线程并发执行可以提高程序的效率, 可以同时完成多项工作 2.多线程的应用场景 红蜘蛛同时共 ...
- Unable to load DLL 'api-ms-win-core-localization-l1-2-0.dll': 找不到指定的模块
asp.net mvc 4.6 发布到WinServer2008R2 SP1 提示 错误 Unable to load DLL 'api-ms-win-core-localization-l1-2-0 ...
- nginx——优化 Nginx 站点目录
1. 禁止解析指定目录下的指定程序 location ~ ^/data/.*.(php|php5|sh|pl|py)$ { # 根据实际来禁止哪些目录下的程序,且该配置必须写在 Nginx 解析 PH ...
- makefile简单学习
前言 在C语言中,我们需要将源代码生成可执行的程序.这里面其实要经过非常多的步骤.参看下图: 这中间主要通过make命令,读取一种名为“makefile”或“Makefile”的文件来实现软件的自动化 ...
- linux (centOS)安装 oracle 11g 以及卸载oracle
目录 首先.1. 一.参数以及环境配置 1.创建用户和组 2.创建数据库软件目录和数据文件存放目录 3.配置oracle用户的环境变量 4.修改linux内核,修改/etc/sysctl.conf文件 ...
- Linux命令学习之路——内容剪切:cut
使用者:所有角色 用法:cut [ -bcdfn ] [ --complement ] filename 作用:截取文件中的部分字段用于展示或存储到新文件中 应用场景: 1.内容展示 : 截取一个或多 ...