12
に設定すると、私は「T」が制約されなかった場合、私はcomplie時エラーを理解することができインターフェース - NIL
interface
...
TFoo<T : IInterface> = class(TObject)
FField : T;
procedure Clear;
end;
...
implementation
...
procedure TFoo<T>.Clear;
begin
// Line Below Results In
// E2010 Incompatible types: 'T' and 'Pointer'
FField := nil;
end;
...
デルファイ2009年に次のコード例では明確な実装しようとしています。 しかし、 "T"はInterfaceでなければならないので、私はこの構文で が働いていると思っていたでしょう。
FFieldをNILに設定する予定があるので、インターフェイスを解放できますか?
D2009のジェネリックスには多くの問題があります。それが出てくるときはいつでも、次のアップデートで解決されるはずです。これはその1つのように見えます。それをQCに報告してください。それまでは、この解決策がおそらく最も良い解決策です。 –
参照カウントコードも同様に発行されていることに驚いています。 –
@RyanVanIderstine私はそう願っています!いい古いFField: - nilもそれを出すでしょう。 DXE2 +で修正されたD2010にも問題が残っていることに注意してください(DXEは手元にありません)。 –