Delphi 在类型声明中,=后面的type做什么
在mORMot的syncomons.pas中有以下代码片段:Delphi 在类型声明中,=后面的type做什么,delphi,Delphi,在mORMot的syncomons.pas中有以下代码片段: type .... TTimeLog = type Int64; ^^^^ 第二个类型关键字(在Int64前面)的用途是什么 当您声明与现有类型相同的类型时 编译器将新类型标识符视为旧类型标识符的别名。 因此,鉴于声明: type TValue = Real; var X: Real; Y: TValue; X和Y属于同一类型;在运行时,没有办法 区分价值和真实。这通常无关紧要, 但如果定
type
....
TTimeLog = type Int64;
^^^^
第二个类型
关键字(在Int64
前面)的用途是什么
当您声明与现有类型相同的类型时
编译器将新类型标识符视为旧类型标识符的别名。
因此,鉴于声明:
type TValue = Real;
var
X: Real;
Y: TValue;
X和Y属于同一类型;在运行时,没有办法
区分价值和真实。这通常无关紧要,
但如果定义新类型的目的是利用运行时类型
与属性编辑器关联的信息
特定类型的属性-不同
“名称”和“不同类型”变得很重要。在这种情况下,请使用
语法:
type newTypeName = type KnownType
例如:
type TValue = type Real;
type
TMyType = type Integer;
procedure p(var t:TMyType);
begin
end;
procedure x;
var
m: TMyType;
i: Integer;
begin
p(m); // Works
p(i); // Error! Types of formal and actual must be identical.
end;
强制编译器创建一个称为TValue的新的不同类型
对于var参数,形式参数和实际参数的类型必须相同。对于
例如:
type
TMyType = type Integer;
procedure p(var t:TMyType);
begin
end;
procedure x;
var
m: TMyType;
i: Integer;
begin
p(m); // Works
p(i); // Error! Types of formal and actual must be identical.
end;
这在中进行了描述。文档说明了什么?啊哈,它使RTTI能够看到不同的类型,这就解释了。这比RTTI要多得多。它也影响类型识别。这是编译时属性。