2013-08-09 11 views
6

Es gibt eine Klasse TPerson. Es ist bekannt, dass FSecondName für jedes Objekt eindeutig ist.Klassenfeld (statisches Feld) in Delphi

type 
    TPerson = class(TObject) 
    private 
    FAge:  Integer; 
    FFirstName: String; 
    FSecondName: String; 
    public 
    property Age:  Integer read FAge; 
    property FirstName: String read FFirstName; 
    property SecondName: String read FSecondName; 
    constructor Create; 
    end; 

Wie kann ich ein Klasse-Feld (wie statisches Feld in C#) hinzufügen Personen: TDictionary (String, TPerson), wo der Schlüssel ist SecondName und der Wert ist ein Objekt der Klasse TPerson.

Danke!

+1

Keine zwei Personen haben den gleichen zweiten Namen? Eine wilde, fortschrittliche Gesellschaft, in der Familiennamen durch GUID ersetzt werden? –

Antwort

8

Sie können eine Klassenvariable deklarieren:

type 
    TMyClass = class 
    private 
    class var 
     FMyClassVar: Integer; 
    end; 

Natürlich können Sie unabhängig von der Art Sie Variable wie für die Klasse.

Klassenvariablen haben einen globalen Speicher. Es gibt also eine einzige Instanz der Variablen. Eine Delphi-Klassenvariable ist direkt mit einem statischen C# -Feld vergleichbar.

+0

Wie stellen Sie den Wert ein? Kannst du das im Initialisierungsblock dieser Einheit machen? Brauchen Sie eine 'öffentliche Klassenprozedur SetMyClassVar', damit dies funktioniert? –

+0

Initialisierungsblock funktioniert. Genau wie ein Klassenkonstruktor. Schaut das in den Dokumenten nach. Anders als bei einem normalen Konstruktor. –

Verwandte Themen