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)

相关推荐

  • python光学仿真如何实现光线追迹折射与反射

    技术python光学仿真如何实现光线追迹折射与反射本篇文章给大家分享的是有关python光学仿真如何实现光线追迹折射与反射,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一

    攻略 2021年10月20日
  • statstem使用教程(statsperform怎样使用)

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

    攻略 2021年12月21日
  • 凉州词意思,凉州词古诗王昌龄意思及解析

    技术凉州词意思,凉州词古诗王昌龄意思及解析凉州词(唐)王翰葡萄美酒夜光杯 凉州词意思,欲饮琵琶马上催。醉卧沙场君莫笑,古来征战几人回?
    译文
    美酒倒满了华贵的酒杯,当将士们正要畅饮的时候,马上琵琶突然不停地响起,在催促他

    生活 2021年10月20日
  • 如何做酸辣汤,上海酸辣汤正宗做法是什么

    技术如何做酸辣汤,上海酸辣汤正宗做法是什么上海的酸辣汤原料如何做酸辣汤:老豆腐1块半,猪血1两,木耳半两,猪肉1两.,竹笋半支,冬菇,葱,姜,蛋,香菜 (够全家吃),水,酱油、淀粉半匙,米酒少许,味精半匙,盐1小匙,白醋

    生活 2021年10月20日
  • Oracle数据库中索引的常见执行计划是什么

    技术Oracle数据库中索引的常见执行计划是什么这篇文章将为大家详细讲解有关Oracle数据库中索引的常见执行计划是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。今天

    攻略 2021年12月2日
  • Hibernate中提示serverTimezone出现问题怎么办

    技术Hibernate中提示serverTimezone出现问题怎么办小编给大家分享一下Hibernate中提示serverTimezone出现问题怎么办,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望

    攻略 2021年12月8日