以下之间的语义差异是什么:
RttiType.TypeKind 和 RttiType.Name ?
我问是因为原则上不能从名称推断出 TypeKind 吗?
The TypeKind
and Name
的属性TRttiType
是完全不同的事情。
-
TypeKind
告诉你你属于哪种类型。这可以是 23 个不同选项中定义的一个TTypeKind
枚举类型。
-
Name
告诉你你有哪种类型。这是一个字符串,有无限数量的可能值。
不同的类型(通常)有不同的名称,但也可能有相同的名称TypeKind
。例如,考虑这个简单的演示。
program RttiDemo;
{$APPTYPE CONSOLE}
uses
Rtti;
procedure Main;
var
Context: TRttiContext;
TObjectType, TInterfacedObjectType: TRttiType;
begin
TObjectType := Context.GetType(TObject);
TInterfacedObjectType := Context.GetType(TInterfacedObject);
Writeln(TObjectType.Name);
Writeln(TInterfacedObjectType.Name);
Assert(TObjectType.TypeKind=TInterfacedObjectType.TypeKind);
end;
begin
Main;
Readln;
end.
输出是:
TObject
TInterfacedObject
所以,你无法推断类型kind从类型name因为种类和名称是完全不同的东西。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)