我想要一些在delphi中编写函数的方法,如下所示

procedure Foo<T>;
begin
    if T = String then
    begin
        //Do something
    end;

    if T = Double then
    begin
        //Do something else
    end;
end;

即:我希望能够基于通用类型做不同的事情

我尝试在TypeInfo中使用System,但这似乎适合于对象而不是通用类型。

我什至不知道这可能在帕斯卡

最佳答案

TypeInfo 应该可以工作:

type
  TTest = class
    class procedure Foo<T>;
  end;

class procedure TTest.Foo<T>;
begin
  if TypeInfo(T) = TypeInfo(string) then
    Writeln('string')
  else if TypeInfo(T) = TypeInfo(Double) then
    Writeln('Double')
  else
    Writeln(PTypeInfo(TypeInfo(T))^.Name);
end;

procedure Main;
begin
  TTest.Foo<string>;
  TTest.Foo<Double>;
  TTest.Foo<Single>;
end;

关于delphi - 在delphi中测试泛型的类型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31042997/

10-09 02:51