C#泛型类概念举例分析

技术C#泛型类概念举例分析这篇文章主要讲解了“C#泛型类概念举例分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C#泛型类概念举例分析”吧!C# 泛型类封装不是特定于具

本文主要讲解“C#泛型类概念的实例分析”,简单明了,易学易懂。请跟随边肖的思路,一起学习《C#泛型类概念例析》!

C#泛型类封装了不特定于特定数据类型的操作。泛型类最常用于集合,如链表、哈希表、堆栈、队列、树等。其中以基本相同的方式执行诸如从集合中添加和移除项的操作,而不管存储数据的类型如何。对于大多数需要类集合的情况,推荐的方法是使用。NET框架2.0类库。一般来说,创建泛型类的过程是:从一个现有的具体类开始,将每个类型逐个更改为一个类型参数,直到达到泛化和可用性之间的平衡。创建自己的泛型类时,需要特别注意以下几点:

将哪些类型归纳为类型参数。一般规则是,可以参数化的类型越多,代码将变得越灵活和可重用。但是,过于一般化会使其他开发人员难以阅读或理解代码。如果有约束,应该对类型参数应用哪些约束。一个有用的规则是应用尽可能多的约束,但仍然允许您处理需要处理的类型。例如,如果您知道泛型类仅用于引用类型,请应用类约束。这可以防止您的类被意外地用于值类型,并允许您在t上使用as运算符并检查空值。是否将泛型行为分解为基类和子类。由于泛型类可以用作基类,因此这里的设计考虑与非泛型类相同。

例如,如果您设计了一个将用于在基于泛型的集合中创建项的类,您可能需要实现一个接口,例如IComparableT,其中t是您的类的类型。

参数和约束的规则对于泛型类行为有几种含义,尤其是关于成员的继承和可访问性。在继续之前,一定要理解一些术语。对于泛型类NodeT,客户端代码可以通过指定类型参数来引用该类,以创建封闭构造类型(Nodeint),或者可以将类型参数保留在未指定的状态(例如,在指定泛型基类时)以创建开放构造类型(NodeT)。泛型类可以从具体的、封闭的或开放构造的基类继承:

C#泛型类代码

class basenode { } class basenodegnerict { }//混凝土类型类节点混凝土: base node { }//closedconstructedtypedclass nodeclosedtd : base nodegenericnt { }//openconstructedtypedclass nodeopent : basenodegenetit { }非泛型(混凝土)类可以从封闭构造的基类继承,但不能从开放构造的类或裸类型参数继承,因为客户端代码无法提供在运行时实例化基类所需的类型变量。

C#泛型类代码

//no errorrclasnode 1: base node genericity { }//Generatesanerror//class node genericit { }//Generatesanerror//class node :t { }从开放构造类型继承的泛型类必须为继承类不共享的任何基类类型参数提供类型变量,如以下代码所示:

C#泛型类代码

classBaseNodeMultipleT,U{}//noerrorclassnode4t : basenode multiplet,int{}//NoerrorclassNode5T,U:BaseNodeMultipleT,U { }//generate senror//class node6t : basenode impression,U { }从开放式构造类型继承的泛型类必须指定约束,这些约束是基类型约束或隐含基类型约束的超集:

C#泛型类代码

Classnodeitemtwhert:system。icomparablet,new(){ } class specialnode item : nodeitemtwhert 3360 system。icomparablet,new () {}泛型类型可以使用多个类型参数和约束,如下所示:

C#泛型类代码

Classsuperceytypek,v,uwhereu3360system。icomparableuwherev 3360 new(){ }开放式和封闭式构造类型可用作方法参数:

C#泛型类代码

Voidswapt (listtlist1,listtlist 2){//codetoswapitems } void swapt(listinlist 1,listinlist 2){//codetoswapitems }泛型类是不可变的。也就是说,如果输入参数指定了ListBaseClass,那么当您试图提供ListDerivedClass时,将会出现编译时错误。

感谢阅读。这就是“C#泛型类概念的实例分析”的内容。学习完这篇文章,相信你对C#泛型类概念的实例分析问题有了更深的理解,具体用法还需要实践验证。在这里,边肖将为您推送更多关于知识点的文章,敬请关注!

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/130827.html

(0)

相关推荐

  • 抖音1元1w粉的软件,抖音几万赞是怎么弄的?

    技术抖音1元1w粉的软件,抖音几万赞是怎么弄的?抖音相信大家并不陌生,抖音现在可谓是最受大家欢迎的短视频平台。可能很多抖音的朋友经常分享的视频没有点赞,可能觉得很尴尬。所以,小编今天给大家带来款抖音刷赞刷粉丝的神器。每天

    测评 2021年11月10日
  • hive里面怎么查所有报表中的数据(hive大数据怎么查询所有表)

    技术报表连hive时数据量比较大如何分页查询小编给大家分享一下报表连hive时数据量比较大如何分页查询,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!Hive 提供了类似 Oracle 的 rownum

    攻略 2021年12月16日
  • solr4.7拼音检索怎么实现(solr读音)

    技术solr4.7拼音检索怎么实现这篇文章主要介绍“solr4.7拼音检索怎么实现”,在日常操作中,相信很多人在solr4.7拼音检索怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”

    攻略 2021年12月22日
  • Elasticsearch-1

    技术Elasticsearch-1 Elasticsearch-11-今日内容初识 ElasticSearch安装 ElasticSearchElasticSearch 核心概念操作 ElasticSe

    礼包 2021年11月24日
  • 《LeetCode刷题笔记》Day1——数组

    技术《LeetCode刷题笔记》Day1——数组 《LeetCode刷题笔记》Day1——数组------------恢复内容开始------------
    二分查找
    只要是顺序数组,都可以考虑用一下二分

    礼包 2021年12月14日
  • arctanx的值域,arctanx的极限怎么求

    技术arctanx的值域,arctanx的极限怎么求arctanx的极限用洛必达法则求解。洛必达法则是在一定条件下通过分子分母分别求导再求极限来确定未定式值的方法。众所周知arctanx的值域,两个无穷小之比或两个无穷大

    生活 2021年10月25日