2013-08-09 11 views
6

Istnieje klasa TPerson. Wiadomo, że FSecondName jest unikalne dla każdego obiektu.Pole klasy (pole statyczne) w 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; 

Jak mogę dodać pole klasy (jak pola statycznego w C#) Osoby: TDictionary (String, TPerson), gdzie jest klucz SecondName a wartością jest obiekt klasy TPerson.

Dzięki!

+1

Żadne dwie osoby nie będą miały tego samego imienia? Dzikie, postępowe społeczeństwo, w którym nazwiska rodziny są zastępowane przez GUID? –

Odpowiedz

8

Można zadeklarować zmienną klasy:

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

Oczywiście można użyć dowolnego typu chcesz zmiennej klasy.

Zmienne klasy mają pamięć globalną. Tak więc istnieje jedna instancja zmiennej. Zmienna klasy Delphi jest bezpośrednio analagiczna do pola statycznego C#.

+0

Jak ustawić wartość? Czy możesz to zrobić w bloku inicjalizacyjnym tego urządzenia? Czy potrzebujesz "public class procedure SetMyClassVar", aby to działało? –

+0

Działa blok inicjalizacji. Podobnie jak konstruktor klasy. Zobacz to w dokumentach. Różni się od normalnego konstruktora. –