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)

相关推荐

  • 《LeetCode刷题笔记》Day3——删除元素

    技术《LeetCode刷题笔记》Day3——删除元素 《LeetCode刷题笔记》Day3——删除元素给你一个数组 nums和一个值 val,你需要 原地 移除所有数值等于val的元素,并返回移除后数组

    礼包 2021年12月17日
  • 如何理解SAP HANA Hint

    技术如何理解SAP HANA Hint本篇文章为大家展示了如何理解SAP HANA Hint,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。什么是SAP HANA HintHANA

    攻略 2021年11月23日
  • 大年初一英文,关于大年初一的英语作文50词

    技术大年初一英文,关于大年初一的英语作文50词The Spring Festival is one of the traditional festivals in China. People celebrate it i

    生活 2021年10月22日
  • 抖音刷点赞多少钱,抖音一个赞多少钱

    技术抖音刷点赞多少钱,抖音一个赞多少钱抖音刷点赞多少钱,抖音一个赞多少钱
    拍摄设备也很关键,因为视频的质量也决定了抖音是否推送,建议选择像素较高的手机或者专业相机和相关设备。
    这些目前是抖音上比较热门的内容,各位小伙伴

    测评 2021年11月13日
  • redis令牌桶算法过期时间(redis实现令牌桶算法)

    技术利用Redis如何实现令牌桶算法小编给大家分享一下利用Redis如何实现令牌桶算法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!在限流算法

    攻略 2021年12月21日
  • Python用3行代码输出花式字符串图集的方法是什么

    技术Python用3行代码输出花式字符串图集的方法是什么本篇内容主要讲解“Python用3行代码输出花式字符串图集的方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“P

    攻略 2021年10月27日