カスタム コンポーネントを作成するとき、公開された永続プロパティを実装することがあります。例えば...
type
TMyComponent = class(TComponent)
private
FMyPersistent: TMyPersistent;
...
public
...
published
property MyPersistent: TMyPersistent read FMyPersistent write SetMyPersistent;
...
end;
手順SetMyPersistent
はまだここにないことに注意してください。ここで次のステップに進みます。このオブジェクトを右クリックし、[カーソル位置でクラスを完了する] (またはShift + Control + C
) を選択して、コード補完を呼び出します。このプロパティセッターを自動的に作成すると、割り当てコードが自動的に...
procedure TMyComponent.SetMyPersistent(const Value: TMyPersistent);
begin
FMyPersistent := Value;
end;
先に進んで、この割り当てを完了してくれたことは素晴らしいことです。しかし、通常の場合、私は常に使用に慣れてきました...
procedure TMyComponent.SetMyPersistent(const Value: TMyPersistent);
begin
FMyPersistent.Assign(Value);
end;
プロパティがString
やなどの型である場合Integer
は、直接代入が適切な方法です。しかし、 の公開されたプロパティを実装する場合、TPersistent
を使用する正しい方法ではありませんTPersistent.Assign
か?
これら 2 つの割り当てメカニズムを使用する際の本質的な違いは何ですか? 使用するTPersistent.Assign
ことが適切である場合、コード補完にはわずかな欠陥があります-つまり、それFMyPersistent := Value
が「間違っている」と見なされると仮定します。