Подскажите сниппеты для C# - удалить переменную и список

DevOps

Client
Регистрация
30.11.2020
Сообщения
496
Благодарностей
314
Баллы
63
С "коробки" нет возможности это сделать.
Но, можно попытаться используя рекурсию докопаться до нужных функций.
Пример как это сделать когда-то показывал пользователь @legorange в этой теме - речь шла о методах установки значения по умолчанию для переменных.
Возможно, что подобным способом можно создать и удалить список.

Хотя... Может быть в данном случае проще было бы использовать контекст, чем пытаться разобраться с не документированным функционалом Зенно...
Добрый вечер. В контексте моего вопроса и Вашего опыта и просто фантастического скила - подскажите, как происходит резервирование памяти для объектов? Допусти я очистил сущность без удаления, то есть ее содержание равно нулю, но сколько сама она резервирует как сущность?
Даже не так задал вопрос - сколько сама сущность как пустой объект занимает памяти и сколько она резервирует в рамках проекта под себя
 
  • Спасибо
Реакции: BAZAg

BAZAg

Client
Регистрация
08.11.2015
Сообщения
1 788
Благодарностей
2 453
Баллы
113
Добрый вечер. В контексте моего вопроса и Вашего опыта и просто фантастического скила - подскажите, как происходит резервирование памяти для объектов? Допусти я очистил сущность без удаления, то есть ее содержание равно нулю, но сколько сама она резервирует как сущность?
Даже не так задал вопрос - сколько сама сущность как пустой объект занимает памяти и сколько она резервирует в рамках проекта под себя
Это Вы преувеличиваете - я такой же новичок, как и множество на этом форуме.

Обсуждение по-поводу того, как выделяется память для объектов - я пробовал затрагивать здесь.
В целом, я как и Вы пришел к выводу, что чем больше порождается объектов - тем больше в дальнейшем проблем с производительностью.
Начал читать книжки... И не помню уже в какой прочитал, что для многопотока важно, чтобы созданные пустые объекты ссылались на одну и ту же область в памяти (что собственно я и показал в теме, на которую ссылаюсь). К сожалению, под руками не сохранилось где именно я это прочитал, чтобы ссылаться на первоисточник.

Что касается списков Зенно, что они имеют под капотом, в какой момент пытаются синхронизироваться с файлами, в какой момент происходит проверка подключен ли файл к списку (или это производится только один раз) и какие ещё дополнительные штуки происходят под капотом (которые могут использовать какие-то ресурсы ) - я не знаю :(

Для своих задач я знаю одно - что созданная сущность хранится в памяти пока находится в области видимости (от открывающей { до закрывающей фигурной скобки }). Из-за чего для временных списков, с которыми мне приходится работать в Зенно - я использую что-то вроде такого: List<string> list = Enumerable.Empty<string>().ToList();
И когда этот объект нужно передать между кубиками - тогда использую контекст, как например писал volody00: project.Context["list"] = list.ToList<string>();
А в кубике, который должен использовать list: List<string> list = (List<string>) project.Context["list"];
В этом случае, чтобы удалить старый объект полностью - мне достаточно: project.Context["list"] = Enumerable.Empty<string>().ToList();

.... но сколько сама она резервирует как сущность?
Можно сериализовать объект, и посмотреть его размер.
Пример:
C#:
long size = 0;
object obj = new object();
using (Stream stream = new MemoryStream()) {
    BinaryFormatter formatter = new BinaryFormatter();
    formatter.Serialize(stream, obj);
    size = stream.Length;
}
 
  • Спасибо
Реакции: DevOps

DevOps

Client
Регистрация
30.11.2020
Сообщения
496
Благодарностей
314
Баллы
63
Это Вы преувеличиваете - я такой же новичок, как и множество на этом форуме.
Это называется "синдром самозванца", он только подтверждает скилы.
Спасибо Вам и всем кто участвовал в обсуждении.
В целом, я как и Вы пришел к выводу, что чем больше порождается объектов - тем больше в дальнейшем проблем с производительностью.
78731
 
Последнее редактирование:
  • Спасибо
Реакции: BAZAg

DevOps

Client
Регистрация
30.11.2020
Сообщения
496
Благодарностей
314
Баллы
63
Извиняюсь перед всеми кто потратил время на данный тред
Финты ушами которые я искал - следствие либо неправильно заданного мною вопроса в другом треде, либо не правильно понятого пользователями.
Меня волновала потокобезопасность переменных, как оказалось
"Отдельный экземпляр переменной "Variable" создается в стеке каждого потока
Вместе с тем потоки разделяют данные, относящиеся к тому же экземпляру объекта, что и сами потоки"
Неправильно заданный мною вопрос потратил много времени у форумчан. Извините
 

iicemaster

Client
Регистрация
20.01.2022
Сообщения
43
Благодарностей
3
Баллы
8
Доброго дня форумчане. Знатоки подскажите два момента.
Есть сниппет очистки переменной
project.Variables["Переменная"].Value = String.Empty;
А как должны выглядеть сниппеты для блока "C# Свой код"
- удалить переменную
- удалить список (список в проекте не привязан к файлу и существует только в период выполнения "C# Свой код")
Спасибо и хороших выходных
project.Lists["имя списка"].Clear();
 

Кто просматривает тему: (Всего: 2, Пользователи: 0, Гости: 2)