15

我有一个在 TStringList 中保存多个文件名的类。我可以使用以下索引访问特定文件名:

myclass.stringlistclass[index]

但是如何使用以下语法获取文件名?

myclass[index]

有没有我可以实现的属性来实现这个功能?

4

2 回答 2

31
private
  function GetColumnValue(const ColumnName: string): string; overload;
  function GetColumnValue(Index: Integer): string; overload;
  procedure SetColumnValue(Index: integer; const Value: string);
public
  property Values[const ColumnName: string]: string read GetColumnValue; default;
  property Values[ColumnIndex: integer]: string read GetColumnValue write SetColumnValue; default;
end;

这表示:

  • 你可以有多个default索引器属性
  • 多个索引器属性可以具有相同的名称,例如Values
  • 属性 getter 可以是重载(具有相同的名称) ,例如GetColumnValue
  • Delphi 将通过类型签名解决重载
于 2012-05-29T09:38:42.857 回答
13

在索引属性上使用“默认”关键字。每个类可以有一个默认属性。

每个类可以有多个默认属性,但是这些默认属性必须具有相同的名称。

一个例子:

    property Item[const Coordinate: TPoint]: TSlice read GetSlice write SetSlice; default;
    property Item[x,y: integer]: TSlice read GetSlice write SetSlice; default; 

您甚至可以让 getter 和 setter 共享相同的名称,只要它们具有overload指令即可。

于 2012-05-29T09:30:14.110 回答