栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【从头构筑C#知识体系】2.1 泛型

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【从头构筑C#知识体系】2.1 泛型

【系列文章目录】

文章目录
  • 【系列文章目录】
  • 前言
  • 一、什么是泛型
  • 二、泛型约束
  • 三、泛型使用


前言

本篇介绍泛型

【C#文档——泛型】


一、什么是泛型

泛型将类型参数的概念引入 .NET,这样就可设计具有以下特征的类和方法:在客户端代码声明并初始化这些类或方法之前,这些类或方法会延迟指定一个或多个类型。
泛型类和泛型方法兼具可重用性、类型安全性和效率,这是非泛型类和非泛型方法无法实现的。

在C#1.0中的冗长代码因为泛型而大大的改善
泛型可以在设计一个类或方法时,将类型作为参数来传入
提高了代码的复用性、安全性并且还提高了性能
这些也是泛型的特点

  • 代码复用性
    泛型类定义一次,可以用类型参数来做不同的实例化操作
    例如List在实例化的时候指定类型,就可以实例化为只包含T类型的List
  • 安全性
    如果在ArrayList类中添加一个整数、一个字符串、一个类实例化出来的对象
    这个时候使用Foreach语句迭代并转换为Int就会出现异常
    而泛型很好的解决了这个问题
    例如在List中,使用List的定义,能被放入List中的就只能是int类型
  • 提高性能
    泛型并不是在使用对象,而是使用定义类型
    例如当List的泛型类型定义为int
    int类型在JIT编译器动态生成的类中使用
    不需要再进行装箱和拆箱操作
    (从值类型转换为引用类型称为装箱,从引用类型转换为值类型称为拆箱)
二、泛型约束

在使用泛型的时候我们还可以为泛型添加约束来进行设计
泛型约束就是使用where来添加约束条件的的

public class Singleton where T : Singleton{
	//...
}

这是一个单例基类的泛型约束写法
在我们使用继承来定义一个单例类的时候
可以保证Singleton中传入的T是继承了Singleton的

三、泛型使用

在实际使用中,如果不是设计底层逻辑或者要做框架和库
只是写一些逻辑层和UI层的话
基本上掌握List 和 Dictionary 这些API的使用也就够了

但是如果要做框架和库或者做一些通用的底层逻辑
掌握泛型来做API就必不可少了
通常我们需要设计的泛型API有:

  • 泛型接口
    public interface Base where T : Base   
    {     
        T Value { get; set; }   
    }    
    
  • 泛型类
    public class Singleton where T : Singleton
    {
    	//...
    }
    
  • 泛型方法
    public void Fun(T args) where T: struct
    {
    	Debug.Log(args);
    }
    
  • 泛型委托
    public delegate void dele(T args);
    

而他们可以与泛型反射配合使用

  • 泛型的反射
    var type = typeof(T);
    

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/998717.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号