以下声明S和之间的区别是什么F?
type
TMyClass = class(TObject)
private
S: String;
private var
F: String;
end;
Run Code Online (Sandbox Code Playgroud)
我问的原因是因为我可以使用S相同的方式F(不添加var关键字).
他们的待遇不同吗?
jac*_*ate 12
它们都是具有相同可见性的Fields.
在var有时需要关键字,当声明的字段之后其他声明(如常量,内类型或甚方法和属性之后).
例如:
type
TMyClass = class
private
FSomeField: string; //<--- this is a field, here you don't need the var clause
const
SOME_CONSTANT = 1;
OTHER_CONSTANT = 2;
var //<---- here you need the var clause to start declaring fields
FSomeOtherField: string;
end;
Run Code Online (Sandbox Code Playgroud)
var在第二种情况(FSomeOtherField)中需要该字段来指示编译器现在出现一系列字段声明,但在第一种情况下,由于历史原因它不需要,因为在第一个Delphi版本中,您只能声明Fields而没有支持嵌套类型或常量.