Как инициализировать TList <T>за один шаг, используя Delphi? - PullRequest
7 голосов
/ 24 апреля 2011

Я уверен, что это простой вопрос, но я не могу его запустить:

var
  FMyList: TList<String>;
begin
  FMyList := TList<String>.Create(?????);
end;

Как вставить вместо ?????чтобы вставить эти 3 строки:

'one''два'«три»

Спасибо ..

Ответы [ 2 ]

15 голосов
/ 24 апреля 2011

Не один лайнер, а два лайнера:

FMyList := TList<String>.Create;
FMyList.AddRange(['one', 'two', 'three']);

Редактировать: Конечно, вы можете комбинировать это с подходом Дэвида.

5 голосов
/ 24 апреля 2011

Нет единого способа сделать это.Вы можете написать свой собственный конструктор, чтобы сделать это так:

constructor TMyList<T>.Create(const Values: array of T);
var
  Value: T;
begin
  inherited Create;
  for Value in Values do
    Add(Value);
end;

Тогда вы могли бы написать:

FList := TMyList<string>.Create(['one', 'two', 'three']);

Обновление

Как правильно указал Уве в своем ответе, код, который я представляю, должен использовать метод AddRange():

constructor TMyList<T>.Create(const Values: array of T);
begin
  inherited Create;
  AddRange(Values);
end;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...