当前位置: 首页 > news >正文

C#知识|泛型Generic概念与方法

哈喽,你好啊,我是雷工!

关于泛型在前面学习记录过

《泛型集合List相关方法》、《Dictionary泛型集合的使用总结》;

其中泛型集合 List<T>、Dictionary<k,v>所在的命名空间为:System.Collection.Generic;

01 非泛型集合

与泛型集合对应的是被淘汰了的非泛型集合:

非泛型ArryList,Hastable  所在命名空间:System.Collections;

①ArryList

非泛型集合ArryList里可以添加任意类型,虽然添加方便,但是对于数据本身来讲,非常不完全,会导致开发中很多时候不可控,另外还存在拆装箱问题。

② 啥是拆装箱

装箱:将值类型的元素,放到集合中会被转换成object类型,这个过程叫做装箱。

拆箱:将一个集合中的元素取出来,但是这个元素本质是值类型,所以,我们必须强制类型转换。

拆装箱的缺点:当存储大量数据时,拆装箱会影响程序性能。

由于不安全和影响性能两个问题导致非泛型集合被淘汰。

02 泛型集合

①泛型集合出现的原因:

开发中不希望在一个容器中添加不同类型的数据,但是又希望这个容器能够根据我们的需求,随时决定能够添加何种数据。

②泛型概念

泛型是一种程序特性,当定义的时候并不对类型做规定,但是当使用的时候,必须明确规定类型,且不能改变。

03、泛型出现的场合

①泛型集合;

②泛型方法;

③泛型类;

④泛型委托;

04 泛型方法

泛型方法就是把一个方法的返回值类型,方法参数定义成泛型类型。

常见的泛型类型表示方法:T、T1、T2、……

05 default

泛型中default关键字的使用,主要用于直接的赋值;

示例:

public class MyGenericClass<T1,T2>

{

    private T1 data1;

    private T2 data2;

    

    public MyGenericClass()

    {

        写法1:

        data1=new T1();    【写法错误】

        原因:

        因为T1类型不能确定是引用类型,所以不能new;

        写法2:

        data1=null;【写法错误】

        原因:

        因为很多时候值类型不可以为null

        写法3:

        data1=default(T1);【写法正确】

        data2=default(T2);

    }

}

相关文章:

  • 存贮论模型案例与Matlab实现
  • Ubuntu显卡服务器黑屏无响应的维护日志
  • 【Vue3】实现一个高可用的 markdown 显示组件
  • 【C++/数据结构】栈
  • LeetCode 718 - 最长重复子数组
  • VADv2: 基于矢量表征和概率规划的E2E架构
  • 《英雄无敌3:死亡阴影》游戏秘籍
  • 使用sam-vit-base 模型在caltech256 数据集上实现图片召回
  • 算法题笔记(自用)——Python
  • PHP实现国密SM4算法,银行系统加密算法,JAVA和PHP可相互转换(附完整源码)
  • 矩阵基本概念
  • Spring Boot 自定义 Starter 完整实战手册
  • QT:Graphics View的坐标系介绍
  • 消息中间件应用的常见问题与方案?
  • JS :移除数组中的指定数据
  • LeetCode 热题 100 53. 最大子数组和
  • 老牌工具,16年依然抗打!
  • 计算机毕业设计SpringBoot+Vue.js林业产品推荐系统 农产品推荐系统 (源码+文档+PPT+讲解)
  • Github 2025-02-28 Java开源项目日报 Top9
  • Spring Boot spring-boot-maven-plugin 参数配置详解
  • 陕西宁强县委书记李宽任汉中市副市长
  • 来沪一个月几乎未花住宿钱,女子虚构卫生问题屡薅酒店羊毛被刑拘
  • 加拿大总理宣布新内阁名单
  • 马上评丨火车穿村而过多人被撞身亡,亡羊补牢慢不得
  • 比特币挖矿公司GRYP股价涨超171%:将与特朗普儿子创设的公司合并
  • 英国首相斯塔默住所起火,警方紧急调查情况