如何制作 function/procedure 的别名?

How to make an alias of a function/procedure?

在Delphi中有没有办法将一个过程声明为另一个过程的别名? 类似于:

function AnAliasToUpperCase(const S: AnsiString): AnsiString = system.AnsiStrings.UpperCase;  

以后在程序中调用AnAliasToUpperCaseUpperCase必须完全相同。

定义它,例如像常量声明:

const
  AliasToUpperCase: function(const S: AnsiString): AnsiString = System.AnsiStrings.UpperCase;

可能会满足您的需求。

问题 "How to make an alias to a function/procedure" 的正确答案是 "You can't"。

但是有两种解决方法可以模拟这种情况,这两种方法都可能会带来一些开销 - 第一种是另一个答案中所示的 const。

除了将其声明为 const 之外,您还可以将其声明为新的内联例程:

function AliasToUpperCase(const S: AnsiString): AnsiString; inline;
begin
  Result := System.AnsiStrings.UpperCase(S);
end;

但是你依赖于内联的编译器设置,并且还需要将 AnsiStrings 单元添加到你调用 AliasToUpperCase 的任何地方,否则你将收到 H2443 Inline function has not been expanded because unit is not specified in USES list 警告。

对于此函数签名,它可以工作,但对于其他 return 类型,您可能会缺少 return 值优化并具有额外的值副本。