“var”对字段声明有什么区别?

时间:2013-03-04 23:21:24

标签: delphi syntax

SF的以下声明之间的区别是什么?

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

我问的原因是因为我可以像S一样使用F(不添加var关键字)。

他们的待遇是否不同?

2 个答案:

答案 0 :(得分:13)

完全没有区别。根据{{​​3}}:

  

var关键字是可选的。但是,如果没有使用,则全部   字段声明必须在任何属性或方法之前发生   声明。在任何属性或方法声明之后,var可以   用于引入任何其他字段声明。

答案 1 :(得分: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字段来指示编译器现在进行一系列字段声明,但在第一种情况下,由于历史原因不需要它,因为在第一个Delphi版本,您可以声明Fields,并且不支持嵌套类型或常量。