Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
1 / 1 / 2
Регистрация: 03.10.2021
Сообщений: 138

Какой есть аналог delete из C++ для C#?

26.04.2023, 21:41. Показов 1195. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть некий код, где есть динамическое выделение памяти оператором new. В С++ к нему в паре всегда должен идти delete или delete[], чтобы освободить выделенную память. С С#, конечно, станется, может он сам всё делает, после передачи указателей как параметры функции просто через ключевое слово ref, я ничему не удивлюсь, но мне кажется, тут должно быть что-то.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
26.04.2023, 21:41
Ответы с готовыми решениями:

Какой аналог delete(pascal) в языке си?
:scratch: Добавлено через 28 секунд нужен для работы со строками

Есть ли какой либо аналог для вебвью?
Ребята всем привет. У меня вопрос, нуждаюсь в вашей помощи и возможно дальнейшем сотрудничестве есть мобильное приложение которое...

Какой аналог виндовой chkdsk есть для линукс?
Подскажите пожалуйста как проверить диски в Линукс на ошибки.

12
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18242 / 14156 / 5366
Регистрация: 17.03.2014
Сообщений: 28,846
Записей в блоге: 1
26.04.2023, 23:58
Слава57, в C# нет ключевого слова delete за ненадобностью. Память очищается, встроенным в среду исполнения (CLR), сборщиком мусора.
0
Эксперт .NET
 Аватар для Wolfdp
3789 / 1766 / 371
Регистрация: 15.06.2012
Сообщений: 6,543
Записей в блоге: 3
27.04.2023, 01:02
Цитата Сообщение от Слава57 Посмотреть сообщение
после передачи указателей как параметры функции просто через ключевое слово ref
ref абсолютно не про это.

Цитата Сообщение от Слава57 Посмотреть сообщение
тут должно быть что-то
прямого аналога delete нет, т.е. явно сказать приложению "прикончи этот объект" нельзя. Есть другие вещи:

1. GC.Collect() -- принудительно пнуть GC, чтобы он начал собирать неиспользуемые объекты. Реальный сбор не гарантируется, да и вообще лишний раз его лучше не дергать.
2. using для всего что реализует IDisposable. Вот про это лучше не забывать.
3. еще есть такой зверь как WeakReference. Очень темная магия, ни разу не припоминаю чтобы понадобилось на практике.

В целом для начинающих самое главное выучить что все реализующее IDisposable должно быть прибито по завершению. Два других пункта -- ознакомится и забить до лучших времен.
0
8 / 8 / 1
Регистрация: 01.04.2016
Сообщений: 622
27.04.2023, 11:05
здрасьте, а как же Dispose() и null?

C#
1
2
myobject.Dispose();
myobject=null;
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
27.04.2023, 11:22
Цитата Сообщение от Atarion Посмотреть сообщение
а как же Dispose() и null?
Обнулять ссылку имеет смысл в очень редких случаях, когда переменная живет неразумно долго (например, если это статическое поле).
В подавляющем большинстве случаев она сама сдохнет вместе с объектом или методом.
0
1338 / 918 / 264
Регистрация: 08.08.2014
Сообщений: 2,759
27.04.2023, 14:10
Цитата Сообщение от Atarion Посмотреть сообщение
а как же Dispose()
Основное его применение - освобождение неуправляемых ресурсов.
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16117 / 11238 / 2887
Регистрация: 21.04.2018
Сообщений: 33,038
Записей в блоге: 2
03.05.2023, 10:39
Цитата Сообщение от Неко с ушами Посмотреть сообщение
еще есть такой зверь как WeakReference. Очень темная магия, ни разу не припоминаю чтобы понадобилось на практике.
Вот ближайший пример: Создание диалоговых окон, согласно паттерну MVVM - используется список слабых ссылок List<WeakReference<UIElement>> elements.
0
1 / 1 / 2
Регистрация: 03.10.2021
Сообщений: 138
05.05.2023, 20:48  [ТС]
То есть я правильно понял, что создал я себе какую-нибудь строку для DataGridView, а потом она и не пригодилась. Я просто забиваю на неё и она сама удаляется? Если да, то мне всё больше и больше нравится шарп)
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16117 / 11238 / 2887
Регистрация: 21.04.2018
Сообщений: 33,038
Записей в блоге: 2
05.05.2023, 21:39
Цитата Сообщение от Слава57 Посмотреть сообщение
Я просто забиваю на неё и она сама удаляется?
Да.
Но надо правильно "забить".
0
Эксперт .NET
 Аватар для Wolfdp
3789 / 1766 / 371
Регистрация: 15.06.2012
Сообщений: 6,543
Записей в блоге: 3
05.05.2023, 23:38
Цитата Сообщение от Слава57 Посмотреть сообщение
Я просто забиваю на неё и она сама удаляется?
Почитайте про сборщик мусора https://learn.microsoft.com/ru... ollection/ или хотя бы https://metanit.com/sharp/tutorial/8.1.php

конкретно со строками есть приколы:
- компилятор по умолчанию "оптимизирует память" тем что все одинаковые строки в проекте помечает ссылкой на одну
C#
1
2
3
var s1 = "Nya!";
var s2 = "Nya!";
var result = object.ReferenceEquals(s1, s2); -- true
- они "статичны". Т.е. выполнив s += "a". Вы создали НОВУЮ строку, а не добавили к существующей.
C#
1
2
3
4
5
var s1 = "Nya";
var s2 = "Nya";
s1 += "-ha-ha!";
s2 += "-ha-ha!";
var result = object.ReferenceEquals(s1, s2); -- false
программе можно указать что строки должны "храниться в едином экземпляре", но это мягко говоря подтормозить программу. Чаще приходиться либо использовать StringBuilder, либо работать с Span.

Цитата Сообщение от Слава57 Посмотреть сообщение
Если да, то мне всё больше и больше нравится шарп
Когда-то в темах .net курсировал паладин, который нес знамя "clr .net -- неоптимизированное УГ. Оно лагает, лагает безбожно, фу писать на нем код. Вот на С++...". Если серьезно: да, удобно (собственно для этих целей JAVA и .NET и создавались), но есть и свои издержки.
0
 Аватар для IamRain
4693 / 2701 / 734
Регистрация: 02.08.2011
Сообщений: 7,227
06.05.2023, 03:19
Цитата Сообщение от Wolfdp Посмотреть сообщение
- они "статичны"
Иммутабельны (immutable), а не статичны. Не надо придумывать свою терминологию.
0
Эксперт .NET
 Аватар для Wolfdp
3789 / 1766 / 371
Регистрация: 15.06.2012
Сообщений: 6,543
Записей в блоге: 3
06.05.2023, 04:44
Цитата Сообщение от IamRain Посмотреть сообщение
Иммутабельны (immutable), а не статичны. Не надо придумывать свою терминологию.
Профдеформация. Я "статичный" специально взял в скобки, так как понимал что static -- совсем про другое, хоть и упоминается довольно часто в контексте "что-то там не шибко изменяемое". На а так string неизменяемый, и каждый раз когда мы выполняем действие по изменению строки, по факту создаем новую таки правильнее. И душно. Фыр.
0
 Аватар для IamRain
4693 / 2701 / 734
Регистрация: 02.08.2011
Сообщений: 7,227
06.05.2023, 04:52
Цитата Сообщение от Wolfdp Посмотреть сообщение
И душно. Фыр.

Не по теме:

Пушистым в мае всегда душно.)



Не то чтобы завожу дискуссию, но лучше разворачивать мысль в таких случаях, а то правильно поймут только профдеформированные, а начинающие зафиксируют некорректно. Все, открыл форточку..
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
06.05.2023, 04:52
Помогаю со студенческими работами здесь

А есть какой нибудь уникодовый аналог для MessageBox?
А есть какой нибудь уникодовый аналог для MessageBox?

[WPF] Есть ли какой-то аналог метода ShowDialog() для страниц?
Скажите, пожалуйста, есть ли какой-то аналог метода ShowDialog() для страниц в WPF и как он работает?

Какой есть аналог события TextBox.SelectionChanged для PasswordBox?
Какой есть аналог события SelectionChanged (TextBox). И, собственно, при срабатывании этого события, мне нужно запомнить позицию каретки,...

Какой есть аналог isalpha для работы с русским алфавитом?
Использую string и нужно проверять записан ли внутри текст или число. Какими средствами можно это сделать? Обычный isalpha(str.c_str())...

Есть ли какой-нибудь аналог TestCase для NUnit`а в MStest UnitTesting?
Есть ли какой-нибудь аналог TestCase для NUnit`а в MStest UnitTesting? Желательно с примерами.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru