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)

相关推荐

  • 如何理解Spring启动过程

    技术如何理解Spring启动过程这篇文章主要介绍“如何理解Spring启动过程”,在日常操作中,相信很多人在如何理解Spring启动过程问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何理

    攻略 2021年10月20日
  • 为什么需要图数据库

    技术为什么需要图数据库这篇文章给大家介绍为什么需要图数据库,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。当前,互联网数据呈指数级增长,但是以更快速度增加的是数据之间的关系。企业的 CIO 和 CTO

    攻略 2021年11月30日
  • 什么是Redis Cluster

    技术什么是Redis Cluster本篇内容介绍了“什么是Redis Cluster”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够

    攻略 2021年11月4日
  • 怎么使用Web3.js API 在页面中进行转账

    技术怎么使用Web3.js API 在页面中进行转账这期内容当中小编将会给大家带来有关怎么使用Web3.js API 在页面中进行转账,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。如何

    攻略 2021年11月2日
  • 修改带JAVA 自定义类的报表还要重启应用该怎么解决

    技术修改带JAVA 自定义类的报表还要重启应用该怎么解决修改带JAVA 自定义类的报表还要重启应用该怎么解决,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法

    攻略 2021年12月2日
  • Python列表的定义及使用方法是什么

    技术Python列表的定义及使用方法是什么这篇文章主要介绍“Python列表的定义及使用方法是什么”,在日常操作中,相信很多人在Python列表的定义及使用方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操

    攻略 2021年11月1日