Что такое Boxing и Unboxing? Рассказываю на примерах

Поделиться
HTML-код
  • Опубликовано: 12 июн 2024
  • Поддержи канал, бро!
    paypal.me/gamedevlavka - мир
    boosty.to/gamedevlavka - рф
    И даже криптой (пока только Ethereum):
    0x7a53325D1C36Eea7BbE8C6a8D00f2a0efd580e77
    Наконец-то добрался до объяснения, что такое боксинг (boxing) и анбоксинг (unboxing). А бонусом к видео - ответы на вопросы к предыдущим выпускам, уточняю, как же работают ссылочные типы внутри значимых и наоборот. Эти знания все еще подходят как для разработчиков в Unity, так и для любых других программистов, работающих на C#.
    Кстати, лайки и донаты волшебным образом ускоряют процесс записи новых видео!
    __________
    Залетай в Таверну Разработчика в телеге, и делись своими траблами в Unity, вместе разбираться будем!
    t.me/gamedevtavern
    Подписывайся на канал в телеге, или на твиттер, там я публикую коротенькие типсы и практики, которые помогут писать код лучше, понятнее и эффективнее:
    Telegram: t.me/gamedevlavka
    Twitter: / gamedevlavka
    Twitter (личный): / vavilichevgd
    0:00 Вступление
    0:56 Что если класс в структуре и наоборот?
    8:33 Что такое Boxing и Unboxing

Комментарии • 15

  • @r.a.moiseenko
    @r.a.moiseenko 2 года назад +7

    Очень интересные видео уроки по Unity, только начал изучать, но прямо помогает (по книжкам не все разберешь). Когда изучал PHP случайно наткнулся на касты Д.Елисеева, там курсы на 100+ часов идут, после его курсов, на все остальные смотрел как на г..но )) Он берет одну конечную задачу (например интернет-магазин или онлайн-аукцион) и с нуля ее решает, после курса, проект можно с мелкими доработками в продакшн запускать. У него в ход идет все - SOLID, DDD и т.п. Переписывает многие вещи на фреймворках, крутой чувак, короче. Было бы круто, чтобы в Unity такой же чувак появился ;)

  • @whatsup325
    @whatsup325 2 года назад +3

    Благодарю за отличный контент!

  • @vladisslavss
    @vladisslavss 2 года назад +1

    Хорошее видео!)

  • @def6141
    @def6141 2 года назад +1

    Спасибо, лайк!

  • @user-ox6eq9dz8o
    @user-ox6eq9dz8o 2 года назад +1

    для этого я и делаю дженерик чтобы не было лишней упаковки/распаковки.

  • @yummybunny7351
    @yummybunny7351 2 года назад +1

    Корректно ли сказать, что Boxing и Unboxing - это cast, при котором у переменной тип меняется со значимого на ссылочный (или наоборот) ?

    • @gamedevlavka
      @gamedevlavka  2 года назад +1

      Некорректно, потому что меняется не тип, а фактически появляется новая переменная с новым типом

  • @krivodeling7925
    @krivodeling7925 2 года назад

    Я правильно понял, что боксинг/анбоксинг актуальны, только когда нужно поменять значимый тип на ссылочный (создав для этого новый объект)? А если в контексте будут только ссылочные типы, то боксинг/анбоксинг не будет применяться? Спасибо!

    • @gamedevlavka
      @gamedevlavka  2 года назад

      Не совсем так. Боксинг/анбоксинг, это не фича, а издержки. Нет никакой нужды размножать данные конвертируя форматы. Но бывает нужно использовать данные в максимально общем виде - как object или интерфейс. Удобно, но нужно понимать, что если данные будут значимыми, то будет иметь место боксинг/анбоксинг (что не есть хорошо), и учитывать это

  • @antongamayunov7274
    @antongamayunov7274 2 года назад +2

    Очень конечно познавательно. Я понял, что боксинг это плохо. А зачем вообще тогда нужен боксинг ? Чтобы мы получили ссылку, а не значение? Ну так после Unboxing у нас все равно будет значение, а не ссылка. Замечу, что во многих ваших видео у меня повисает вопрос "а зачем?" Не возникает такого вопроса только если я уже знаком в какой-то степени с рассказываемой темой . А так контент классный, смотрю почти все ваши видео, не забрасывайте это дело

    • @gamedevlavka
      @gamedevlavka  2 года назад +4

      В программировании редко бывают идеальные решения: максимально гибкие и при этом быстрые. Поэтому программисты всегда балансируют между этими двумя аспектами. Чтобы уметь балансировать, нужно понимать плюсы и минусы разных подходов. Например: ObservableVariable с боксингом плохой вариант, т.к. высокая вероятность, что будет много переменных с типом значения, которые могут меняться очень часто. Соответственно будет быстро разрастаться стек и куча, это плохо.
      Однако существуют моменты, когда гибкость важнее скорости, например события не частые, но очень разнообразные, тогда подойдёт боксинг и анбоксинг

  • @denisponomarou1443
    @denisponomarou1443 Год назад

    Переделай пожалуйста старый Observable в новый

  • @flashbackmovie8792
    @flashbackmovie8792 2 года назад +1

    Сделай обзор интерфейсов

    • @gamedevlavka
      @gamedevlavka  2 года назад

      Каких интерфейсов?

    • @just-mannn
      @just-mannn Год назад

      ​@@gamedevlavka хороших