2015-04-14 28 views
10

Nowoczesne Delphi pozwala konstruktorom na rekordy. Mam następujący kod:Czy muszę dodać "dziedziczoną" linię do konstruktorów rekordów?

{ TKMRect } 
constructor TKMRect.Create(aPoint: TKMPoint); 
begin 
    inherited; // <<- Do I need to add this line ? 

    Left := aPoint.X; 
    Top := aPoint.Y; 
    Right := aPoint.X; 
    Bottom := aPoint.Y; 
end; 

Moje pytanie brzmi - czy muszę dodawać inherited linię moich płyt konstruktorów? I dlaczego?

Odpowiedz

10

Nie, nie musisz tego robić, ponieważ rekordy nie obsługują dziedziczenia, a więc inherited nie jest opcją w tym kontekście.

FWIW Uważam konstruktorów rekordów za wzór anty. Utrudnia to czytelnikowi na stronie wywołania rozróżnienie między typem wartości a typem referencji. Osobiście używam statycznych funkcji klasy o nazwie New, które zwracają nową wartość do tego celu. Możesz spierać się, czy inna nazwa jest lepsza, ale nie ma to znaczenia, tak długo nie jest to Create.

+0

Tak jak myślałem. Dzięki za wyjaśnienie! – Kromster

+0

Dobra uwaga na temat nazewnictwa, ma sens. – Kromster