创建泛型类型和方法模板时能够使用的功能非常有限。因为编译器把模板代码中的所有类型参数当做System.Object处理,只能完成赋值操作和调用Object的几个方法,大大限制了泛型的用途。
约束可以突破这种限制,同时提供一种控制机制。约束允许我们指定规则,声明在运行时可以代替类型参数的类型。使用约束,可以限定类型参数必须是—个类或者结构,也可以限定类型参数必须实现某个特定的接口或者继承某个特定的基类。
约束不仅可以限制可用的类型,也能够给VB编译器提供重要的信息。例如,如果编译器知道某个类型参数必须实现特定接口,编译器就允许在模板代码中调用该接口上的方法。
1.类型约束
类型约束是最常用的约束类型。类型约束可以限制某个类型参数必须是指定类的子类或者必须实现指定的接口。这个功能能够实现在向SingleLinkodList添加对象时自动给对象排序口创建该类的一个副本ComparableLinkedList,改变类的声明,添加IComparable约束:
Public Class SingleLinkedList (Of ValueType As IComparable)
现在,ValueType除了继承System.Object的方法,也必须实现ICorrqparable接口定义的所有方法。
Add方法可以调用IComparable接口的所有方法(当然也可以使用System.Object的方法)。编译器知道所有的ValueType类型变量都实现了IComparable接口,因此可以安全地调用IComparablc接口定义的CompareTo方法口用下面的实现代码更新最初的Add方法:
Public Sub Add(ByVal value As ValueType)
VB 2010 (33)泛型约束
最新推荐文章于 2020-05-19 14:20:44 发布
本文详细介绍了VB 2010中泛型约束的概念和使用,包括类型约束、类和结构约束、New约束以及如何使用多个约束。约束允许限定类型参数的类型,如必须实现特定接口或继承特定基类,从而增强泛型的功能,如在泛型列表中实现自动排序。同时,约束还提供了编译时的安全性,如调用接口方法等。
摘要由CSDN通过智能技术生成