c#发展

首页 » 常识 » 问答 » 在NET中,如何定义C泛型类和泛型方
TUhjnbcbe - 2025/6/4 20:10:00
C#核心开发-第17单元-泛型-第1节:泛型类和泛型方法C#核心开发-泛型类和泛型方法1.什么是泛型?对于C#中的泛型,我们可以这样简单的理解:将数据类型当作参数,可以作为实参传递给类或方法,称为类型参数化。所谓泛型,即通过参数化类型来实现在同一份代码上操作多种数据类型,可以使用多种数据类型初始化,泛型编程是一种编程范式,它利用“参数化类型”将类型抽象化,从而实现更为灵活的复用。在.NETFramework类库中,微软也添加了许多的泛型类、泛型方法等,并且将之前非泛型的类或方法,也增加了泛型版本。如下是在.NET控制台应用程序的Main()方法中使用微软提供的C#泛型列表ListT的使用。实例化Listlt;Tgt;-图1实例化ListT完整代码如下:usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;namespaceYidosoft.Edu.Csharp.GenericSets{classProgram{staticvoidMain(string[]args){ListintList=newListint();ListstringstrList=newListstring();}}}先来看一下代码,尖括号是泛型的一种语法格式,中间是传入的类型,也就是类型参数化。泛型Listlt;Tgt;实例化-图2在图2中,我们发现,这2行代码都是使用了List类,但是传入的类型参数是不一样的,也就是类型可以当作参数传入,从而处理不同类型的数据。2.泛型类2.1.如何定义泛型类?在上面使用的ListT是微软给我们定义好的泛型列表,是一个泛型类,下面我们定义一个自己的泛型类。首先,创建一个普通Person类:定义Person类-图3图3的Person是使用class关键字定义的普通类,现在我们把它改成泛型类:定义泛型Person类-图4Person泛型类定义代码:namespaceYidosoft.Edu.Csharp.GenericSets{publicclassPersonT{}}在图4中定义了具有1个类型参数的泛型类。创建C#泛型类的基本语法如下:访问修饰符class类名T1,T2,…{代码段}尖括号中的类型参数可以是1个,也可以是多个,但不能为空,至少是1个。泛型类具有多个类型参数-图5图5就是一个具有3个类型参数的泛型类。现在我们在泛型类中定义一个方法,方法的返回类型是类型参数:泛型方法定义-图6图6的代码说明如下:(1).定义了一个带有一个类型参数泛型类Person。(2).在泛型类中定义一个方法,该方法的返回类型是T,参数的类型也是T,表示这个方法的返回类型和参数类型是实际传过来的数据类型。2.2.如何使用泛型类?对于C#泛型类,使用时与普通类是一样的,也需要实例化,只不过,泛型类需要传入具体的数据类型作为参数。实例化泛型类-图7传入int类型作为参数:类型int作为参数-图8在图8中,PersonT泛型类就实例化完成了。怎么调用泛型类中的方法呢?调用泛型方法-图9当我们实例化泛型类PersonT时,传入了int类型,则在该类内,都将定义时的T替你成int。传入类型作为参数-图10这里使用了var推断类型,也能推断出Count()方法返回的类型是int。当然,也可以传入其它任意类型:T可以是任意类型-图11实例化自定义的C#泛型类:Personstringperson2=newPersonstring();stringcount=person2.Count(小强);Personintperson1=newPersonint();varcount=person1.Count();这里传入的是string类型作为PersonT的参数。在C#中,不管是泛型类,还是泛型方法,都是具有类型化参数,将具体的类型当作实参传入到类或方法的中。C#深入编程-线上视频图文课堂配套课后技能作业+理论考试+源码淘宝¥购买已下架
1
查看完整版本: 在NET中,如何定义C泛型类和泛型方