Как реализовать индексированное свойство [] default

У меня есть класс, который содержит несколько имен файлов внутри TStringList. Я могу получить доступ к определенному имени файла по индексу, используя:

myclass.stringlistclass[index]

Но как я могу получить имя файла, используя следующий синтаксис?

myclass[index]

Есть ли свойство, которое я могу реализовать для достижения этой функциональности?

Ответы

Ответ 1

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
  • свойства геттеров могут быть перегрузками (то есть иметь одно и то же имя), например, GetColumnValue
  • Delphi разрешит перегрузки по типу

Ответ 2

Используйте ключевое слово default по индексированному свойству. В каждом классе может быть одно свойство по умолчанию.