章泛专题

(delphi11最新学习资料) Object Pascal 学习笔记---第14章泛型第3节(泛型约束)

14.3 泛型约束 ​ 正如我们所看到的,您在泛型类的方法中可以做的事情非常少。您可以传递它(即分配它)并执行上面我介绍的泛型类型函数允许的有限操作。 ​ 为了能够执行泛型类的实际操作,通常需要对其进行约束。例如,如果将泛型类型限制为类,则编译器将允许您在其上调用所有TObject方法。您还可以进一步限制类为给定层次结构的一部分,或实现特定接口,从而可以在泛型类型的实例上调用类或接口方法。

(delphi11最新学习资料) Object Pascal 学习笔记---第14章泛型第2节(泛型类型函数 )

14.2.4 泛型类型函数 ​ 到目前为止,我们遇到的泛型类型定义的最大问题是,您对泛型类型元素能做的事情非常少。有两种技术可以用来克服这个限制。第一种是利用运行时库的一些特殊函数,这些函数专门支持泛型类型;第二种(也是更强大的一种)是在定义泛型类时对可以使用的类型进行限制。 ​ 本节将重点介绍第一种方法,下一节将重点介绍约束。正如我提到的,有一些 RTL 函数可以处理泛型定义的参数类型 (T

(delphi11最新学习资料) Object Pascal 学习笔记---第14章泛型第2节(泛型类型实例化)

14.2.3 泛型类型实例化 ​ 请注意,这是一个相当高级的一节内容,重点关注泛型的一些内部细节及其潜在的优化。如果这是您第一次学习泛型,那么建议您多读一遍。 ​ 除了一些优化之外,每次实例化泛型类型时,无论是在方法中还是在类中,编译器都会生成一个新的类型。这种新类型不会与同一泛型的不同实例(或同一方法的不同版本)共用代码。。 ​ 以下是一个示例(它是GenericCodeGen示例的一部分

(delphi11最新学习资料) Object Pascal 学习笔记---第14章泛型第3节(接口引用 vs 泛型接口约束)

14.3.4 接口引用 vs 泛型接口约束 ​ 在上一个例子中,我定义了一个泛型类,可以与实现特定接口的任何对象一起使用。我也可以通过创建基于接口引用的标准(非泛型)类来获得类似的效果。实际上,我可以定义一个类,如下所示(也是 IntfConstraint 示例的一部分): typeTPlainInftClass = classprivateFVal1, FVal2: IGetValue;pu

(delphi11最新学习资料) Object Pascal 学习笔记---第14章泛型第2节(标准类的泛型方法)

14.2.2 标准类的泛型方法 ​ 使用泛型类型定义类可能是最常见的情况,但泛型类型也可以用于非泛型类。换句话说,一个普通的类也可以有一个泛型方法。在这种情况下,不仅要在创建类的实例时为泛型占位符指定类型,还要在调用方法时指定类型。下面是一个使用泛型方法的类示例。以下是来自GenericMethod示例的具有泛型方法的示例类: typeTGenericFunction = classpubli

(delphi11最新学习资料) Object Pascal 学习笔记---第14章泛型第2节(Object Pascal中的泛型)

14.2 Object Pascal中的泛型 ​ 在前面的例子中,我们已经看到了如何在Object Pascal中定义和使用泛型类。我决定在深入讨论这个非常重要但又相当复杂的技术细节之前,通过一个例子来介绍泛型这一特性。在从语言角度讨论泛型之后,我们将列举更多的例子,包括使用和定义泛型容器类,这是该语言中这种技术的主要用途之一。 ​ 我们已经看到,当你定义一个类时,你可以在尖括号中添加一个额外

(delphi11最新学习资料) Object Pascal 学习笔记---第14章泛型

第三部分 高级语言特性 第14章 泛型 ​ Object Pascal 提供的强类型检查对于提高代码的正确性非常有用,这也是我在本书中经常强调的一个主题。不过,强类型检查也可能带来麻烦,因为你可能想编写一个存储过程或类,对不同的数据类型进行类似的处理。对象 Pascal 语言的一个特性可以解决这个问题,类似的语言(如 C# 和 Java)也有这个特性,即泛型。 ​ 泛型或模板类的概念实际上来