S
次のとの宣言の違いは何F
ですか?
type
TMyClass = class(TObject)
private
S: String;
private var
F: String;
end;
私が尋ねている理由は、(キーワードを追加せずに)S
と同じ方法を使用できるためです。F
var
彼らは異なって扱われますか?
まったく違いはありません。ドキュメントによると:
var キーワードはオプションです。ただし、これを使用しない場合、すべてのフィールド宣言は、プロパティまたはメソッドの宣言の前に行う必要があります。プロパティまたはメソッドの宣言の後に、var を使用して追加のフィールド宣言を導入できます。
どちらも同じ可視性を持つフィールドです。
キーワードは、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
2 番目のケース ( ) では、コンパイラに一連のフィールド宣言が来るように指示するためにフィールドが必要ですが、FSomeOtherField
最初のケースでは、歴史的な理由から必要ありません。最初の Delphi バージョンでは、フィールドを宣言するだけで済み、フィールドがなかったからです。ネストされた型または定数のサポート。