首页 理论教育 C#泛型约束基本知识,类型约束、新建约束详解

C#泛型约束基本知识,类型约束、新建约束详解

时间:2023-10-22 理论教育 版权反馈
【摘要】:在本节的内容中,将详细介绍C#泛型约束的基本知识。在C#中,使用关键字where来实现约束。类约束的具体格式如下:T(类型):类3.新建约束新建约束的类型参数必须是具有无参数的公共构造函数,当此约束类型和其他约束类型一起使用时,必须在最后使用新建约束。实例57:使用泛型类型约束的方法下面通过一个具体的实例来说明使用泛型类型约束的具体流程。

C#泛型约束基本知识,类型约束、新建约束详解

在定义泛型类时,可以限制在实例化类客户端代码的参数类型。当客户端代码使用了被约束的类型来实例化时,会出现编译错误。在本节的内容中,将详细介绍C#泛型约束的基本知识。

在C#中,使用关键字where来实现约束。

1.结构约束

结构约束的类型参数必须是值类型,它几乎可以指定除Nullable以外的所有值类型。结构约束的具体格式如下:

T(类型):结构

2.类约束

类约束的类型参数必须是引用类型,包括所有的类、接口、委托和数组类型。类约束的具体格式如下:

T(类型):类

3.新建约束

新建约束的类型参数必须是具有无参数的公共构造函数,当此约束类型和其他约束类型一起使用时,必须在最后使用新建约束。新建约束的具体格式如下:

T(类型):new()

4.基类约束

基类约束的类型参数必须是指定基类或是派生指定的基类。基类约束的基本格式如下:

T(类型):<基类名>

5.接口约束

接口约束的类型参数必须是指定的接口,或者是正在实现过程中的指定接口。接口约束的具体格式如下:(www.xing528.com)

T(类型):<接口名>

6.裸类约束

通过裸类约束,为T提供的参数必须是为被约束对象提供的参数,或者是派生为被约束对象提供的参数,这被称为裸类约束。裸类约束的具体格式如下所示:

T(类型):u(被约束对象)

在某程度上,编译器必须保证它调用的运算符或调用的方法,能够操作客户端代码指定的类型参数,这样就能够检查泛型列表中某个项,以确定这个项是否有效,或和它的其他项进行比较。

实例57:使用泛型类型约束的方法

下面通过一个具体的实例来说明使用泛型类型约束的具体流程。本实例保存在“光盘:\daima\13”文件夹内,项目名为fanyueshu。实例的功能是根据定义的泛型类,调用类内的方法并对其进行处理,并输出处理后的文本。实例文件的主要代码如下:

上述实例代码的设计流程如下。

1)定义类mm。

2)在类mm内设置属性name,并返回name值。

3)定义方法shuchu(),设置其参数s为string类型。

4)定义泛型类nn,设置其泛型类型为T。

5)定义数组names,并定义方法Add()向数组内添加数据。

6)通过foreach语句逐一读取添加后的数组数据,并将数据输出。

7)定义mm类型对象tt,然后调用输出函数输出显示处理后的数据。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈