为什么类型名称_Recordset 中有下划线?

Why is there an underscore in the type name _Recordset?

我有查询数据库的代码,如下所示:

uses Data.DB, Data.Win.ADODB;

// ...

var
  cmd: TAdoCommand;
  r: _Recordset;
  firstName: string;

begin
  cmd := TAdoCommand.Create(nil);
  try
    cmd.ConnectionString := 'Server=dbServer;Database=master';
    cmd.CommandText := 'select FirstName from customers where id=123';
    r := cmd.Execute;
    firstName := '';
    if not r.EOF then firstName := r.Fields.Item['FirstName'].Value
  finally
    cmd.Free
  end

  // ...
end

这行得通,但我想知道这是否不是理想的编写方式,因为 _Recordset 类型开头的下划线。似乎下划线告诉我这种类型在某种程度上是“内部的”,不能在标准代码中使用。

这种代码有没有更标准的写法?如果不是,为什么会有下划线?

如果在use子句中加上Winapi.ADOInt,可以去掉下划线,使用RecordSet.

这是因为在 Data.Win.ADODB 中我们有:

 _Recordset = Winapi.ADOInt.Recordset;

在Winapi.ADOInt中我们有:

Recordset = _Recordset;
_Recordset = interface(Recordset21)