C#实战036:各种泛型的定义和使用详解

[复制链接]

下载APP可以快速和圈友联系

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
什么是泛型(Generic)

望文生义,就是明白界说范例,只要在利用的时辰蔡需要指定范例,这时泛型中的参数会被响应的值范例替换。当我们有多个方式不异只是范例分歧时我们便可以界说一个泛型方式,除了方式泛型还支持界说类、接口、调集、拜托、事务及约束等属性。在c#中经过尖括号“”将范例参数括起来暗示泛型,声明泛型与声明非泛型遵守不异的法则,只是在界说泛型时需要增加一个来暗示泛型。

C#实战036:各类泛型的界说和利用详解-1.jpg

界说泛型类/泛型方式

泛型类界说和我们普通的类界说法则是一样的,这里我界说了一个Generic泛型类并一定了一个Dome泛型方式,这里面的T就代表着数据范例,当实例化Generic时必须供给T的具体数据范例。C#是强范例说话,变量的利用要严酷合适界说,一切变量都必须先界说后利用。

C#实战036:各类泛型的界说和利用详解-2.jpg

当我们实例化Generic类时为T赋予了int范例,那末Dome方式中的a,b则被界说成了int范例的数据,当我们传入的参数不合适int范例时就会报错。

C#实战036:各类泛型的界说和利用详解-3.jpg

界说泛型接口

接口利用 interface 关键字声明,它与类的声明类似,接口是指定一组函数成员而不实现他们的援用范例。一切方式在继续该接口的类里面来要实现。接口可以标准继续类的结构、同一接口形式、进步扩大性、方便治理和挪用,接口只能声明方式、属性、事务、索引器等的非静态成员函数的范例。

C#实战036:各类泛型的界说和利用详解-4.jpg

界说泛型调集

普通调集可以经过 ArrayList来界说,由于.NET 中一切类都继续于Object,所以这些调集可以存储任何范例的元素(需引入空间名using System.Collections;)。

C#实战036:各类泛型的界说和利用详解-5.jpg

泛型调集暗示一组具有不异属性工具类的实例化,调集利用List申明,泛型调集类和普通调集功用上根基分歧,唯一的区分是泛型调集的元素范例不是Object而是指定的范例,假如增加了其他范例的数据在编译器就会出错(需引入System.Collections.Generic)。

C#实战036:各类泛型的界说和利用详解-6.jpg

泛型工具

当界说实例工具时碰到具有不异属性而范例分歧时我们便可以利用泛型来界说,这样可以进步代码的重用性战争安性。在界说类的时辰元素范例是一个笼统的未知范例,当实例化该泛型工具时,应为笼统范例T 指定具体数据范例。

C#实战036:各类泛型的界说和利用详解-7.jpg

泛型工具调集

工具调集在开辟中也是常被用到的,当我们需要获得数据库中一切用户的一切信息时我们凡是会将用户属性界说成一个工具类,再将每个工具的信息存入调集合并将数据返回,这里我们就用到了调集。而泛型调集则是在界说调集的时辰以工具作为属性类来界说数据范例的。

C#实战036:各类泛型的界说和利用详解-8.jpg

泛型拜托

拜托利用 delegate 关键字声明,拜托是一种特别的类是以与类的声明类似。拜托是C#中函数回调机制,可以将方式看成另一个方式的参数停止传递。援用时间接将函数名赋值给拜托函数(不需要在函数名以后加括号),当挪用这个拜托的时辰,将依次挪用其所绑定的Test方式,拜托和所援用的方式其参数和返回值都必须连结分歧。

C#实战036:各类泛型的界说和利用详解-9.jpg

泛型事务

事务利用 event 关键字来声明,是拜托的一个实例,所以申明时需要拜托类的称号,必须在类中申明但不能在可履行代码中声明,当事务被触发时挪用对应的拜托来实现响应的方式。这样可以避免拜托中的参数被随意挪用和点窜,进步代码平安性。

C#实战036:各类泛型的界说和利用详解-10.jpg

泛型约束

在界说泛型时,可以对类、接口,方式的范例参数停止限制,当利用不合适要求的范例作为参数时会编译出错。范例参数的约束是利用关键字where来指定,泛型支持6中范例约束别离是where T: struct(参数必须是值范例)、where T : class(参数必须是援用范例)、where T:new()(参数必须具有无参机关函数)、where T:U(范例参数必须是为 U 供给的参数)、where T:(参数必须是指定的基类)和where T:(参数必须是指定的接口)。比如我这在泛型类指定T为值范例,当我们实例化时假如付给他string范例的话就会报范例不符的毛病提醒。

C#实战036:各类泛型的界说和利用详解-11.jpg


上一篇:C++|stl算法操纵普通数组及输出迭代器
下一篇:手把手教你企业级游戏项目开辟,2048小游戏(附源码+设想文稿)
温馨提示:
好向圈www.kuaixunai.com是一个专业经验分享交流平台,你可以在这里发布专业经验,也可以发布需求与服务,禁止带推广链接、联系方式、违法词等,违规将封禁账号。 下载好向圈客户端可以随时随地交流经验,也可以和圈友发起聊天成为好友哦!
回复

使用道具 举报

已有(7)人评论

跳转到指定楼层
123470607 发表于 2020-5-2 12:10:09
能不写泛型就别写,会引发代码爆炸,编译时间变长
回复

使用道具 举报

佐霖佑舍劣 发表于 2020-5-2 12:15:57
C#实战036:各种泛型的定义和使用详解
回复

使用道具 举报

单纯地蓝地b 发表于 2020-5-2 12:17:27
在学这个语言,先关注下
回复

使用道具 举报

Thaddeus23298 发表于 2020-5-2 12:23:37
收藏
回复

使用道具 举报

牙好胃口就好1 发表于 2020-5-2 12:28:55
转发了
回复

使用道具 举报

梦的向导糜 发表于 2020-5-2 12:34:24
转发了
回复

使用道具 举报

夏天里的夏天拥 发表于 2020-5-2 12:37:29
转发了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本圈子积分规则