내 공부 과정에서 나는 Nick Hodges가 쓴 "Delphi에서 코딩"책을 사용합니다. Delphi 2010을 사용하고 있습니다.왜 일반 익명 메서드가 호환되지 않는 형식을 사용합니까?
익명 메소드에 관한 장에서는 .NET using
을 위조하는 것에 대한 매우 흥미로운 예제를 제공합니다. 예제를 컴파일하려고하면 컴파일러에서 오류가 발생합니다. 결과를 얻도록 도와주세요.
내 클래스 :
여기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;
내가 위의 코드를 사용하려고하는 방법입니다 :
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;
컴파일러 오류 : 델파이 형식 유추가
[DCC Error] uMain.pas(36): E2010 Incompatible types: 'TProc<ugrsObj.Using<T>.T>' and 'Procedure'
버그처럼 보이는 :
명시 적으로이 같은 유형의 매개 변수를 명시해야합니다. D2010 제네릭은 꽤 절름발이였습니다. –