Да .
В Delphi, классы являются ссылочными типами.
Каждая переменная типа TBitmap
, TList
, TButton
, TStringList
, TForm
и c. не что иное, как указатель на объект, поэтому объект всегда передается «по ссылке». Только этот адрес, это целое число собственного размера, передается вызываемой подпрограмме. обращайтесь к нему. Но сам указатель передается по значению, поэтому, если вызываемая процедура изменяет указатель параметра на другой объект, вызывающий не увидит этого; изменяется только копия адреса вызываемой подпрограммы. В var
указатель сам передается по ссылке, поэтому вызываемая подпрограмма также может это изменить: она может изменить исходный объект и может заставить переменную вызывающей стороны указывать на другой объект, если захочет.
С другой стороны, типы значений, такие как целые числа, логические значения, наборы, статические c массивы и записи, передаются по значению, поэтому - без какого-либо оформления параметров, например var
- вызываемая процедура получает копию , и любые изменения вносятся только в эту копию. Вызывающий не увидит изменения своей переменной. Однако, если вы используете параметр var
, переменная будет передана по ссылке.
Итак, в вашем случае это не имеет ничего общего с тем, что TList
является "списком" или является чем-то, что " содержит указатели ". Это примерно TList
класс.