null
Изначальное значение с которым инициализируются сложные объекты.
Примитивы, как следует из названия, просты и хранят значение в памяти напрямую. В первом приближении можно считать, что ссылка на переменную содержит значение примитива. Для более сложных объектов такой подход не применим и поэтому требуется специально обученное значение, которое будет обозначать что переменная не хранит никакой объект.
funcdef void Callback(); // Объявим простой тип функции, чтоб получить использовать её для ссылки
void [[[main|main.html]]](){
Callback A@; // Любой ссылочный тип по умолчанию инициализируется как null
A@ = function(){
print("Присвоим переменной анонимную функцию");
};
TimerStart(CreateTimer(), 1.f, false, @A); // Используем переменную каким либо образом
A@ = null; // Освободим память не дожижаясь заверщения main
}
Строки
Хоть строки и являются массивом байт, то бишь сложным комплексным объектом, но из-за строгого разграничения ответственности между типами null
к ним не применим. Вместо этого используется пустая строка.
void [[[main|main.html]]](){
string A; // Строка инициализирована как пустая, но ресурс памяти не создан
A = "Ресурс памяти создан и он принимает значение последовательности байт этого текста";
A = ""; // При установке пустой строки значение ресурс памяти удаляется.
}
Last modified: 16 October 2024