Упаковка и распаковка значимых типов c# | boxing and unboxing | C# ОТ НОВИЧКА К ПРОФЕССИОНАЛУ | # 82
HTML-код
- Опубликовано: 19 май 2024
- В этом уроке мы поговорим о том, что такое упаковка и распаковка значимых типов (boxing and unboxing), когда она происходит, почему это нужно знать и почему этого следует избегать.
✅ ИСХОДНЫЙ КОД / iskhodnyi-kod-k-53016717
🔹 Telegram канал t.me/SergeySimpleCode
🔹 Наша группа ВК smplcode
✅ Доступ к исходному коду и спонсорство / simplecode
✅ donatepay.ru/don/SimpleCode
✅ BTC кошелек: 12oYfJnvt76wjJbpvfhM41m6KPz6uz4LD4
✅ Подписывайтесь на канал / @simplecodeit
00:00 ► что такое упаковка и распаковка (boxing and unboxing)
01:33 ► когда происходит упаковка и распаковка значимых типов
04:50 ► почему упаковка и распаковка работает медленно benchmark
08:09 ► устанавливаем и работаем с ilspy
10:50 ► boxing and unboxing и интерфейсы
13:20 ► пример неявной упаковки и распаковки
#сишарп #simplecode #урокипрограммирования
Cамый лучший способ сказать "спасибо" - поставить лайк и и поделиться уроком с друзьями. Это очень мотивирует создавать полезные уроки =)
✅Доступ к исходному коду и спонсорство www.patreon.com/SimpleCode
✅ donatepay.ru/don/SimpleCode
✅BTC кошелек: 12oYfJnvt76wjJbpvfhM41m6KPz6uz4LD4
Если что, если провести подсчёты, то из всех тех кто начинал смотреть данный курс, до этого урока дошёл всего-лишь 1% смотрящих. Само собой это ничего не доказывает, но если судить по предыдущим роликам, очень мало людей доходит до конца. Если вы смотрите весь курс с самого начала и всё ещё здесь - вы большие молодцы, ведь вас очень мало.
поэтому и мотивация делать новые уроки видимо у автора пропала)
@@GGamess Да, жаль. Ведь самое веселое только начинается...
мда, а ещё есть залётные как я.
искал конкретно боксинг))
Остальные устроились на работу.
Они могли переключится на другой источник знаний, например. Я же уже зная C# смотрю выборочно то, о чем имею лишь общее представление.
Чем дольше изучаешь программирование, тем больше понимаешь то, на сколько оно огромное и тем сильнее начинаешь сходить с ума, не понимая как всю эту информацию положить в мозг.
Угу, особенно, когда скачиваешь себе Троелсена или Шилдта - вот там мясо жеское... А это только начальные книги, емаё
@@mediafile9995 кто получше будет Троелсен или Шилдт ?
@@dv5946 Хз, Шилдта пробовал, вроде понятно. Троелсен, говорят, сложноват...
Нет все таки троелсен и шилдт это не то. Много сухой инфы, мало листингов, размазанная теория, которую сложно сразу тестить. Более эффективно c# это просто Ричарда Стилмена + практикум Зиборова
Через 2.5 часа собеседование и я сижу готовлюсь. Вот один из немногих пунктов был понять этот момент, спасибо симл, вовремя!)
как прошло?
Братик, как прошло?
@@pounceintrash4419 душнила попался)
@@mumanmuman9119 какие вопросы задавал? Будет забавно, если бы ты не будешь делать и 1/10 от всех заданий по его вопросам
Ваши курсы самые понятные и объективные: без воды! Голос приятный. Очень понравилось ваше объяснение ООП. Я удивлён, что курсы по c# всё ещё продолжаются. Здоровья вам.
Прикиньте, мне этот вопрос попался на собеседовании, а я его смотрел за день до этого. А также там были вопросы про различие структур и классов)) в общем Сергей, очень вам благодарен на уроки!
Я обязательно доберусь до этого урока. А пока пора возвращаться в самое начало)
Заранее спасибо за более чем 100 видео. Прожму в каждом лайк!
Удачи, все мы там были
Начинал давно, до урока ~22го дошëл, но по урокам большую часть "ДЗ" не выполнял своими силами, плюс ещё пытался читать разную литературу про геймдизайн, ещё по пути 2D графику разную пытался делать, в общем сгорел в какой-то момент от наплыва информации, ничего не достигнув. Пока не притронулся ни к чему, в связи с некоторыми проблемами касательно здоровья.
Как только поправлю - начну с чего-то одного. Либо чередуя.
Но я обязательно пройду этот курс.
C# в принципе имеет большую направленность на игры, чем Python, да и чем более лëгкий язык в написании (высокоуровневый) тем как правило сильнее программы нагружают компьютер или дольше исполняется код из того что я понял ещё давно. В идеале конечно C++, но для меня это прям что-то запредельное.
Так что остановился на C#.
После этого курса - пойду смотреть другие ещё где-нибудь с уже чёткой направленностью на Unity.
В любом случае спасибо.
Дружище, ты-огромный молодец. Огромное тебе спасибо и низкий поклон, что такое количество информации даёшь бесплатно. Друзей программистов, к сожалению, нет, поэтому моё спасибо в лайке и в этом комментарии😸👍
Благодарю за Урок.
Действительно на собеседованиях часто задают вопросы по этой теме)
Спасибо большое, как всегда помогайте разобраться глубже!!!
Огромная благодарность, Сергей!
Сергей, благодарю!
Спасибо за ваши уроки.
Спасибо за лучшие уроки по C#!
Просто лучший! Спасибо за уроки!
Сергей, спасибо за видео. Всем друзьям с универа рекомендую ваши уроки по С++ и иногда по С#. Объясняете очень круто.
Очень важный и что не мало важно, интересный урок! Спасибо Сергей!
Спасибо, Сергей!
Спасибо! Молодец! Просто очень классный человек! Продолжай, пожалуйста!
я только начал курс, и заглянул посмотреть когда автор выпустил последний ролик. Ты крут.
Большое спасибо!
Благодарю, очень интересно!!!
Спасибо за урок!
Сергей, спасибо! Вы лучший!❤️
Спасибо за урок.
не знал о таких приколах, спасибо
Спасибо за новый урок
Спасибо за отличные уроки =)
И так. Фух, я почти завершил этот курс. Ну ладно. Огромное спасибо Сергею за такие прекрасные уроки. Как хорошо, что когда я увидел этот курс он уже вышел и мне не приходилось ждать выпуска новых уроков. Буду подкреплять своё изучение книгами. Я два раза уходил из-за эмоционального выгорания, но всё же возвращался и продолжал изучение и наконец то дошел до конца. Суммарно курс прошел за 2 месяца с учетом перерыва в 1-2 недели. В день смотрел по 3-4 урока
Как сейчас успехи?
Спасибо Сергей. Запоздалый лайк.
Урок бомба!
Только приступил к данной теме, м уже урок🤩
Лучшие уроки по программированию)
Сергей, от души, спасибо за видео!
Сегодня я первый день отработал в качестве джуна после 4х месяцев обучения по 8-10 часов в день. Твои видео очень сильно помогли на начальном этапе! Спасибо еще раз!
П.с. донаты с первой зарплаты ;)
Поздравляю, успехов в карьере! =)
Как успехи Бруно?_) Всё там же работаешь?
спасибо за урок
Спасибо!
Спасибо за урок!*)
Спасибо!!!!!!
Ясно и доступно! Спс!
Здравствуйте! Я посмотрел почти весь курс С++, пожалуйста, я вас очень прошу, разберите важную тему как "Паттерны", она достаточно сложная, и хотелось бы очень посмотреть ее в вашем обзоре. Я буду безумно рад если вы сделаете это!!!🥺
разобрался?
Здраствуйте, Сергей. Отличные уроки, спасибо вам за труд!!! Хотелось бы узнать будут ли уроки по паттернам, делегатам и событиям?
Как всегда на высоте.
Раз видео про упаковку и запаковку, близятся видео про обобщения.
Вау классное видео научилсч взламывать пентагон ставлю лайк
Канал супер!!!
Люто! Лайк - очень наглядно!
Топ контент от топового сэнсэя ^_^
Долгожданный видос.
Ураа!!! Он живой! Он вернулся!
сейчас на 48 уроке , скоро доберусь)
спасибо за уроки и за труд !
добрался !))
@@Neroz49rujka Молодец! Как успехи сейчас?
мне всё-таки кажется, что это стоило подать вместе с шаблонами ( iEnumerator, iEnumerator) ведь именно во избежание боксинга используются обобщения
Здравствуйте, Сергей. Спасибо Вам за видеоуроки! А можете показать, как в visual studio выпустить написанный программный продукт, который будет уже передан пользователю?
Добрый день Сергей. Спасибо вам за уроки, кроме вас нигде не найти нормальных уроков по С#. хотел у вас спросить можно ли будет после этих уроков работать на Unity? Заранее благодарю за ответ.
Интересно было бы послушать от вас курс по ASP .Net Core MVC или API
Радует слух -__-
Серёг, есть ли шанс увидеть от тебя курс по С# в Юнити на примере какой-то игрульки? Сейчас направление это популярно, сможешь привлечь много аудитории
The best
спасибо за урок, хотя я в 21 урок. А когда вы собираетесь закончить урок по с#?
годнота
ого, курс продолжается до сих пор. а сколько вообще уроков планируется?
Ты... Это.. Когда умирать соберешься, скажи, мы не дадим xD;
Ролик идёт 15 мин. Сейчас 12 мин после публикации: 165 просмотров, 39 лакйов, 8 комментов. Получается, что мы смотрим быстрее, чем он публикует. Слава идёт впереди времени 😁
Кхм если человек даже 10 секунд видео посмотрит то это защитается как просмотр
Сколько будет длится курс? Сколько еще уроков будет ?
Дайте пожалуйста ссылку на видео где Сергей рассказывал про работу с MessageBox
12:24 это не всегда происходит, иногда там constrained будет. Гарантированно его можно получить, если делать using по структуре (при приведении к IDisposable).
Только во имя всего святого - не создавайте структуру до юзинга
Сергей, не могу понять одну вещь, если в стеке нет сборщика мусора, то как программа понимает что какая-то переменная (значимого типа) уже не нужна и туда можно записать новые данные?
как декомпилировать защищенный файл lua и получить исходный код? вот это будет интересно!
Сергей, можете сделать урок по Делегатам и Событиям?
Присоединюсь к пожеланию - тема делегатов и событий была бы очень интересной.
каждый ролик этого курса смотрю очень внимательно, даже пересматриваю, если не всё понял, но не припомню чтоб был разбор темы бенчмарков и библиотеки с ними, может кто скинет ссылку
Привет, он несколько раз уже упоминал про бенчмарки.
14:14 Как значимый тип (структура) int является наследником класса object? Структуры ж наследуются только от интерфейсов, что сказано в начале видео
Можно заказать вам написание скрипта за оплату?
коммент для продвижения
Когда будут делегаты , лямбда, обобщения , анонимные типы и методы, события....много базовой техники ещё. Хотелось бы понятное объяснения о том для чего нужны события если есть делегаты. Для чего нужны делегаты вроде понял. Если в классе другого разработчика есть делегат и он передаёт аргументы в параметры другого метода, который что-то делает с ними , тогда можно этому делегату присвоить свой метод ,вывести агрументы в свой метод и обработать их по другому , например вывести не на консоль, а куда-то в другое место. Но для чего события непонятно, вроде такие же делегаты.
@@ANTIISLAMOFOB Ну дальше надо осознать что знание языка это по идеи ерунда...к тому же они все похожи сильно. Знание языка это ерунда. Самое сложное это осознать где его применять. Я например когда изучал я думал язык программирования умеет управлять железом, имеет доступ напрямую к памяти, процессору, видеокарте, графике итп....и ты типа неограничен в своих возможностях. А оказывается язык лишь управляет другой программой через api . То есть если ты используешь язык на ос, то всё что ты с помощью него делаешь на самом деле делает не язык, а ос. Язык лишь управляет программой в среде которой находится программа компилятор....то есть находясь в среде windows язык делает всё через неё, бросая её команды ......а сама windows даёт api - набор переменных и объектов, управляя которыми можно что то сделать.....то есть всё что ты можешь сделать ограничено вот этим набором переменных.
@@ANTIISLAMOFOB ну я сейчас веб разработкой занимаюсь пока. Но скоро буду приложение делать под андроид . Та программа которую делаю ...по идеи должна быть изначально под андроид, но я её сделал полностью в виде сайта. Но к сожалению денег я пока на этом не зарабатываю. Да и думаю как то долго.
@@ANTIISLAMOFOB я так понял так как я долго думаю, то на программировании к сожалению не смогу зарабатывать как все. Но есть идея создавать онлайн сервисы(сайты) и зарабатывать на них давая ключ по подписке.
@@ANTIISLAMOFOB Я думаю xamarin под android это плохая идея. Лучше используй Java в среде android studio. Java копия C# плюс/минус ....многие вещи вообще скорей всего не понадобятся , такие как ограничения WHERE . Насчёт базы данных через этот C# ну не знаю....возможно проще отправить данные на сервер, поймать там данные через $_POST , и сервер уже обратится к своей базе данных через PDO. По моему это проще. Я вроде как то раз пробовал использовать этот чёртов SQL в visual studio и очень сильно не понравилось насколько помню. Кстати ...есть ещё локальная база данных, которая находится на самом устройстве, на котором находится программа.....вроде как она создаётся чтобы избежать лишних обращений к серверу....но я догадываюсь что на её использование можно забить и это не скажется на производительности. Всё равно ты ведь открываешь в браузере интернет страницы и они быстро прогружаются даже если много всего содержат.. А сам браузер довольно тяжёлая программа большую часть ресурсов сожрёт она, а не открытая интернет страница. В то время как твоя программа, которую пишешь, она жрёт ресурсов меньше, и поэтому даже если данные подгрузишь с сервера она всё равно будет быстрее работать через открытие интернет страницы в браузере. Я когда буду писать просто тупо подгружу данные с сервера и пофиг.
@@ANTIISLAMOFOB вообще среда visual studio по идеи довольно стрёмная и документация у майкрософт дерьмо то ещё.... она ориентирована на топового профессионала. В какую бы я документацию не зашёл ....в mozilla, node, php, java....блин всё понятно....но как захожу на чёртову документацию от майкрософт.....ни хрена непонятно. Я лично в самом крайнем случае буду писать что то на C# .Так что вообще советую обойти стороной всё что связано с майкрософт. Конечно если игры будешь делать, тут конечно никак не обойдёшь. А потом когда наберёшься опыта в вебе и android, тогда уже можешь пробовать.
Так структуры же не наследуют.. Или для типа Object - исключение?)
Спасибо тебе большое за все твои уроки,ты лучший русскоязычный препод,есть одно НО,почему до сих пор не затронул тему корутин?очень нужно их понять жду твоих уроков по ним,но такими темпами мы к ним доберёмся через год
в C# не предоставлен такой инструмент как корутины из коробки, их нужно реализовывать самому, если речь о Unity, то это уже не к этому курсу, тут основы изучаются, а не api игрового движка
А почему у инта нет своей реализации метода GetType()?
дизы никто не ставил, это австралийцы лайкнули
int a = 1;
a.GetType();
int b = a;
b--;
System.Console.WriteLine(a);
Выведется 1 - почему? Если а здесь становится ссылочным типом (как я понял), почему изменения значения данной ссылки, помещенной в b, на значении а не отражаются?
Привет! Переменная остаётся в стеке, она не перестаёт в нем существовать. При вызове метода GetType переменная из стека упаковывается и передается в метод, после работы метода упакованная переменная (ссылочный тип) удаляется, но в стеке изначальная остаётся. Упаковка не означает, что переменная перестаёт существовать в стеке. Если бы это было не так, нельзя было бы присвоить перменной b значение переменной a, так как она бы являлась ссылочным типом.
@@logosup, спасибо большое за пояснение)
я в конце уже хотел сказать пока в надежде услышать "всем спасибо за внимание,пока", но так и не услышал (
*Л. а. й. к.*
кто изучал с 0 подскажите пожалуйста понятно ли вам, что-то и сколько времени потребовалось чтоб начать понимать хоть что-то
Просмотрел 102 урока на скорости 1.5 за два дня) Почти всё понял.
благодарю за полезный контент, а вот еще текста для содержательного коммента- Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer hendrerit, ipsum in accumsan interdum, neque dolor dictum felis, in condimentum odio libero eget sem. Aenean vitae libero lacinia massa venenatis condimentum. Proin vitae metus a odio mollis efficitur. Pellentesque vitae libero eu erat gravida ullamcorper in sed elit. Phasellus pretium scelerisque vehicula. Fusce lobortis tortor ac mollis suscipit. Nulla facilisi. Integer dapibus, dolor id tempor aliquam, magna velit bibendum nulla, nec ornare dolor metus ut ex. Fusce nisi elit, ornare ac tincidunt at, pulvinar vel urna.
Если в коде упаковка - выйдет тухлая тусовка.
Спасибо!
Спасибо!
Спасибо!
Спасибо!