9

出于兼容性原因(对象被序列化和导出并且必须匹配外部名称)我希望字段名称为“类型”,即

TTBaseWebResponse = class
private
   type: String;
   success: Integer;       
end;

or

TTBaseWebResponse = class
private
   ftype: String;
   fsuccess: Integer;       
public
   type: string read fstring write fstring;
   success: integer read fsuccess write fsuccess;   
end;

Delphi (XE2) 甚至不会编译它。这是可能吗?如何?

4

3 回答 3

12

尝试在字段名称前使用 &

于 2013-07-29T09:45:54.163 回答
8

文档涵盖了这一点:

扩展标识符

您可能会遇到与 Delphi 语言保留字同名的标识符(例如,类中的类型或方法)。例如,一个类可能有一个名为begin. Delphi 保留字如begin不能用于标识符名称。

如果您完全限定标识符,则没有问题。例如,如果要使用 Delphi 保留字类型作为标识符名称,则必须使用其完全限定名称:

var TMyType.type
// Using a fully qualified name avoids ambiguity with Delphi language keyword.

作为一种较短的替代方法,与号 ( & ) 运算符可用于解决标识符和 Delphi 语言保留字之间的歧义。&防止关键字被解析为关键字(即保留字)。如果您遇到与 Delphi 关键字同名的方法或类型,如果您在标识符名称前加上 & 符号,则可以省略命名空间规范。但是当你声明一个与关键字同名的标识符时,你必须使用&

type
  &Type = Integer; 
  // Prefix with '&' is ok.
于 2013-08-08T12:47:28.910 回答
6

是的,您必须在名称前使用 &;

TTBaseWebResponse = class
private
  &type: String;
  success: Integer;       
end;
于 2013-07-29T09:46:09.577 回答