(delphi11最新学习资料) Object Pascal 学习笔记---第14章泛型第2节(泛型类型兼容性规则)

14.2.1 泛型类型兼容性规则

​ 在传统的Pascal和Object Pascal中,核心类型兼容性规则基于类型名称的等价性。换句话说,只有当两个变量的类型名称相同时,它们才是类型兼容的,而不管它们所引用的实际数据结构。这是静态数组类型不兼容的经典示例(TypeCompRules示例的一部分):

type
	TArrayOf10 = array[1..10] of Integer;
procedure TForm30.Button1Click(Sender: TObject);
var
	Array1: TArrayOf10;
	Array2: TArrayOf10
	Array3, Array4: array[1..10] of Integer;
begin
	Array1 := Array2;
	Array2 := Array3; // Error
	// E2010 Incompatible types: 'TArrayOf10' and 'Array'
	Array3 := Array4;
	Array4 := Array1; // Error
	// E2010 Incompatible types: 'Array' and 'TArrayOf10'
end;

​ 正如您在上面的代码中所看到的,所有四个数组在结构上是相同的。然而,编译器只允许您对那些类型兼容的数组进行赋值,要么是因为它们的类型具有相同的显式名称(如TArrayOf10),要么是因为它们具有与在单个语句中声明的数组相同的隐式(编译器生成的)类型名称。

​ 这种类型兼容性规则只有很少的例外,比如与派生类

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值