Различия между структурами и классами

Структуры отличаются от классов в следующих важных моментах:

Присваивание

При присваивании значения переменной, тип которой является структурой, создается копию присваиваемого значения. Таким образом данное присваивание отличается от присваивания переменной ссылочного типа, когда производится копирование ссылки, а не значения.

Подобно присваиванию когда структура используется как параметр, передаваемый по значений, или как значение, возвращаемое функцией, происходит создание копии структуры. Структура может быть передана по ссылке с использованием параметров, передаваемых по ссылке, либо выходных параметров.

Когда свойство структуры используется в левой части оператора присваивания экземплярное выражение, соответствующее свойству, должно классифицироваться как переменная. Если экземплярное выражение классифицируется как значение, то возникает ошибка компиляции.

Пример

Struct UserStructure
    Public Title: string;
    Public Param1: integer;
    Public Param2: double;
    
    Constructor Create(STitle: string; Param1Value: integer; Param2Value: double);
    Begin
        Title := STitle;
        Param1 := Param1Value;
        Param2 := Param2Value;
    End Constructor;
End Struct;

Sub Test();
Var
    StructObj, StructObj1: UserStructure;
Begin
    StructObj := New UserStructure("Пользовательская структура"1003.14);
    StructObj1 := StructObj;
    StructObj1.Title := "Копия структуры с измененными значениями параметров";
    StructObj1.Param1 := 200;
    StructObj1.Param2 := 2.7;
End Sub;

См.также:

Структуры