Dans mon processus d'étude, j'utilise le livre "Coding in Delphi" de Nick Hodges. J'utilise Delphi 2010.Pourquoi ai-je un type incompatible générique de méthode anonyme?
Dans le chapitre sur les méthodes anonymes, il fournit un exemple très intéressant sur la fausseté .NET using
. Lorsque j'essaie de compiler l'exemple, j'obtiens une erreur du compilateur. Aidez-moi s'il vous plaît à obtenir un résultat.
Ma classe:
type
TgrsObj = class
class procedure Using<T: class>(O: T; Proc: TProc<T>); static;
end;
implementation
{ TgrsObj }
class procedure TgrsObj.Using<T>(O: T; Proc: TProc<T>);
begin
try
Proc(O);
finally
O.Free;
end;
end;
Voici comment j'essaie d'utiliser le code ci-dessus:
procedure TForm4.Button1Click(Sender: TObject);
begin
TgrsObj.Using(TStringStream.Create,
procedure(ss: TStringStream)
begin
ss.WriteString('test string');
Memo1.Lines.Text := ss.DataString;
end);
end;
erreur du compilateur:
[DCC Error] uMain.pas(36): E2010 Incompatible types: 'TProc<ugrsObj.Using<T>.T>' and 'Procedure'
On dirait un bug. Les génériques de D2010 étaient plutôt boiteux. –