9

S以下和的声明有什么区别F

type
  TMyClass = class(TObject)
  private
    S: String;
  private var
    F: String;
  end;

我问的原因是因为我可以使用与(不添加关键字)S相同的方式。Fvar

他们的待遇不同吗?

4

2 回答 2

13

完全没有区别。根据文档

var 关键字是可选的。但是,如果不使用它,则所有字段声明都必须出现在任何属性或方法声明之前。在任何属性或方法声明之后,var 可用于引入任何额外的字段声明。

于 2013-03-04T23:27:19.420 回答
12

它们都是具有相同可见性的字段。

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;

var第二种情况下需要该FSomeOtherField字段(支持嵌套类型或常量。

于 2013-03-04T23:28:29.513 回答