МОДИФИКАТОР IN C# и бенчмарк | РАЗНИЦА между IN REF и OUT | C# ОТ НОВИЧКА К ПРОФЕССИОНАЛУ | # 45

Поделиться
HTML-код
  • Опубликовано: 22 июн 2020
  • В этом уроке мы изучим ключевое слово in в языке программирования C#, выясним для чего оно нужно, как используется, напишем бенчмарк для теста производительность при использовании модификатора in, а так же выясним какая разница между ключевым словом in ref и out в языке программирования C#.
    ✅ ИСХОДНЫЙ КОД УРОКА bit.ly/3fPKvpA
    ✅ КЛЮЧЕВОЕ СЛОВО REF C# | C# ref что это и для чего нужно | C# ОТ НОВИЧКА К ПРОФЕССИОНАЛУ | # 43 bit.ly/2MCHQ6o
    ✅ КЛЮЧЕВОЕ СЛОВО OUT C# | РАЗНИЦА между REF и OUT C# | C# ОТ НОВИЧКА К ПРОФЕССИОНАЛУ | # 44 bit.ly/316MAJC
    ✅ КАК ИЗМЕРИТЬ ВРЕМЯ ВЫПОЛНЕНИЯ ПРОГРАММЫ, КОДА, МЕТОДА, ФУНКЦИИ, ЗАПРОСА | C# STOPWATCH | C# ПЛЮШКИ bit.ly/37PRYlQ
    🔹 Telegram канал t.me/SergeySimpleCode
    🔹 Наша группа ВК smplcode
    ✅Доступ к исходному коду и спонсорство / simplecode
    ✅ donatepay.ru/don/SimpleCode
    ✅BTC кошелек: 12oYfJnvt76wjJbpvfhM41m6KPz6uz4LD4
    ✅Подписывайтесь на канал / @simplecodeit
    #сишарп #simplecode #урокипрограммирования

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

  • @SimpleCodeIT
    @SimpleCodeIT  4 года назад +27

    Cамый лучший способ сказать "спасибо" - поставить лайк и и поделиться уроком с друзьями. Это очень мотивирует создавать полезные уроки =)
    ✅Доступ к исходному коду и спонсорство www.patreon.com/SimpleCode
    ✅ donatepay.ru/don/SimpleCode
    ✅BTC кошелек: 12oYfJnvt76wjJbpvfhM41m6KPz6uz4LD4

  • @MrHazur
    @MrHazur 4 года назад +148

    У меня нет высшего образование (только 11 классов) Раньше пробовал, что-то программировать в кавычках. Но серьезно изучать С++ начал 3,5 года назад. Твои видео уроки сдвинули меня с мертвой точки. Они научили меня правильно задавать вопросы и находить на них ответы. Пол года назад прошел собеседование - теперь я джуниор. Спасибо тебе огромное.

    • @Malosolnyj_ogurec
      @Malosolnyj_ogurec 3 года назад +24

      Круто, мотивирует двигаться дальше!!)))

    • @klabukov_dmitry
      @klabukov_dmitry 3 года назад +14

      Думаю будет правильно выразить материальную благодарность автору, который своим трудом так помог вам)

    • @Sokkez
      @Sokkez 3 года назад +3

      А щас кто?

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

      как то ты долго изучал

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

      @@klabukov_dmitry Да я об этом думал, и думаю. Хочу это сделать, когда мой первый, серьезный проект выйдет из dev.

  • @BuFFerS103
    @BuFFerS103 4 года назад +32

    *Я человек простой, вижу видео Сергея - ставлю лайк!*

  • @user-bn6mp6yo1k
    @user-bn6mp6yo1k 3 года назад +43

    Сергей, я сейчас всех рассмешу! Всегда восхищалась IT-шниками и завидовала их увлекательной работе!😄😄😄😄😄. Не было времени начать учиться, да и страшно, что всё равно ничего не пойму! Всё началось с вашего плейлиста по HTML. Решила первый послушать✌✌✌✌✌. Пока ещё 2 недели изучаю и пока всё понятно. Правда сижу сутками🐸🐸🐸🐸🐸🐸🐸. Благо, что на пенсии!!! Какое это прекрасное время ПЕНСИЯ👍👍👍👍👍👍. Правда, времени, что до, что после, как уволилась с должности - НЕ ХВАТАЕТ🙊🙊🙊🙊🙊🙊. А у Вас прирожденный Дар преподавать✌✌✌✌✌✌.СПАСИБО❤❤❤❤❤❤

    • @valerii7104
      @valerii7104 4 месяца назад +1

      @@BasicD2002 Уже сениор хах как видишь

  • @topdeck202
    @topdeck202 4 года назад +77

    Сейчас закрываю сессию, нет времени смотреть. Но всегда захожу и ставлю лайк, когда вижу новое видео. Спасибо за то, что вы делаете!!

  • @stasiqueihnatsenka8226
    @stasiqueihnatsenka8226 4 года назад +38

    Классно объяснил всего за 15 минут на простых и понятных примерах

  • @user-lx5vv3uu8u
    @user-lx5vv3uu8u 4 года назад +23

    Сергей, салюют!
    Спасибо тебе огромное за информативные лекции!!!

  • @user-ll2pv3cx7q
    @user-ll2pv3cx7q 4 года назад +12

    Каждый день ты спасаешь миллионы студентов на сессии! =))

  • @nazarshevchenko856
    @nazarshevchenko856 3 года назад +9

    Господи насколько же это качественное пояснение. Очередное спасибо)!

  • @user-xy5qu1zp4l
    @user-xy5qu1zp4l 3 года назад +16

    Спасибо тебе большое! Думаю даже на платных курсах мне бы так не объяснили. Серьезно, из уроков на Ютубе - это самые топ!

  • @VladisS.Vostok2000
    @VladisS.Vostok2000 3 года назад +3

    Очень годно.
    До этого думал, что это только лишь чтобы обезопасить входящие данные от изменений.

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

    Поддерживающий комментарий для развития канала

  • @mikhailmaliakin8080
    @mikhailmaliakin8080 3 года назад +11

    Объяснение, как всегда на высоте)Спасибо

  • @vyacheslavlouten8681
    @vyacheslavlouten8681 4 года назад +17

    Дождался нового урока) Благодарю вас Сергей за данный курс, вы мне очень помогли!

  • @user-kk6ob5ud3n
    @user-kk6ob5ud3n 3 года назад +8

    Крутейше объясняешь. Ты топ! Спасибо тебе)

  • @alvoltta
    @alvoltta 4 года назад +11

    Только вчера прочитал эту тему, спасибо!

  • @GoodBoy-hs7pv
    @GoodBoy-hs7pv 3 года назад +4

    Сергей, спасибо огромное! You are breathtaking!

  • @liko8019
    @liko8019 3 года назад +3

    лучший канал о программировании!!!

  • @user-wt1hc4hm3t
    @user-wt1hc4hm3t 2 года назад +3

    Всегда удивляюсь наличием "Не нравится" от 3-6 шт, кто эти люди??? Спасибо Автору за ценный контент и развернутое пояснение.

  • @b-films9344
    @b-films9344 3 года назад +3

    В последние время на ТыТрубе смотрю почти только ваш канал)

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

    Гениально и просто! Вы всегда можете доходчиво и интересно объяснить то, что казалось до этого сложным и непонятным)))Спасибо огромное за ваш труд, не останавливайтесь !!!

  • @matem101
    @matem101 3 года назад +8

    Отличный урок!

  • @user-zq5hl8hv8g
    @user-zq5hl8hv8g 3 года назад +3

    Благодарю!!!

  • @user-kz4xm7zk5c
    @user-kz4xm7zk5c 4 года назад +5

    Благодарю, Сергей!

  • @dimasavukov6230
    @dimasavukov6230 4 года назад +6

    Огромное спасибо!

  • @user-hh7cy8tr6h
    @user-hh7cy8tr6h 4 года назад +3

    Спасибо за уроки.
    Почаще бы выходили!!!

  • @currydenz5542
    @currydenz5542 3 года назад +4

    В универе и то меньше информации про такие вещи, а вам спасибо за это

  • @t3m8ch79
    @t3m8ch79 4 года назад +6

    Спасибо за ролик!

  • @katsugeki371
    @katsugeki371 3 года назад +3

    Большое спасибо!

  • @Antonov_Ivan.
    @Antonov_Ivan. 14 дней назад

    Спасибо за урок!

  • @bignumber9483
    @bignumber9483 4 года назад +4

    Спасибо за урок

  • @KlevaGameS
    @KlevaGameS 7 месяцев назад

    Благодарю за урок.

  • @user-sp6nv4ds5v
    @user-sp6nv4ds5v 3 года назад +3

    Спасибо

  • @artyomvoytenko1237
    @artyomvoytenko1237 3 года назад +3

    Спасибо за наглядный тест) Теперь все понятно

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

    Спасибо. Все очень доступно и подробно объясняешь. 👍

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

    Спасибо за урок!
    Было полезно и интересно.

  • @user-sq4ff4zp9b
    @user-sq4ff4zp9b Год назад +1

    Спасибо, Сергей! Твой труд заслуживает большего!

  • @leskhanmuratuly5374
    @leskhanmuratuly5374 3 года назад +5

    Спасибо)

  • @Anton-Os
    @Anton-Os 2 года назад +1

    Благодарю!

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

    Спасибо !!!

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

    Great lessons! Wish there will be continuation!

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

    В очередной раз, спасибо за урок. От себя хочу добавить что IN не всегда может не менять значение. Если в качестве параметра будет выступать значимый тип (структура, энам), то данные в параметре изменить никак не получиться => и данные начальной переменной изменить в методе не удастся. Но если, в качестве параметра будет выступать ссылочный тип (классы), то сами данные, которые в куче изменить можно, а вот ссылку модифицировать никак нельзя. Т.е то что находиться в Стэке он модифицировать отказывается

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

    Самый наглядный пример оптимизации) Спасибо :b

  • @Mr.Epsilion
    @Mr.Epsilion 2 года назад +1

    Thanks for teaching us, it's really simple and help to understood.

  • @user-zh8gn8iw1c
    @user-zh8gn8iw1c 3 года назад +3

    аааа как же я уже хочу ООП

  • @motofun-qv7zc
    @motofun-qv7zc 2 года назад +1

    Отлично!

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

    Спасибо!

  • @Shipa_kLg
    @Shipa_kLg 3 года назад +3

    Большое спасибо за урок, а какие вы книги посоветуете для изучения C#?

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

    Серега
    Ты лучший!!!!

  • @JohnDoe-uu5jy
    @JohnDoe-uu5jy 2 года назад +3

    А не происходит ли неявной операции boxing-а при передаче параметра структурного типа с ключевыми словами ref,out,in ?

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

    Сергей, доброго времени суток. Занимаюсь по Вашим урокам, очень доходчиво объясняете. Интересно знать, Вы работаете с# программистом или работали таковым?

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

    Очень полезный, легкий и интересный урок. Спасибо Сергей. Интересно в плюсах константная ссылка может дать такой же еффект? )

  • @user-db9jc2yb7c
    @user-db9jc2yb7c 4 года назад +4

    Круто

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

    Прогнал бенчмарк на своём компе и разница составила ~1000мс между методами. Значния были 8,5к и 7,5к соответственно.
    Думаю тут ещё не маловажную роль играет скорость ОЗУ разница между DDR3 и DDR4 существенная.

  • @elfinroom1178
    @elfinroom1178 3 года назад +7

    моему компуктеру понадобилось 30 и 7 сек на подсчет . тяжеловато старичку приходится)

  • @artemky3bmu45
    @artemky3bmu45 9 месяцев назад

    Thank you

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

    Не понял, почему, когда работаем с Foo, данные будут копироваться?

  • @aescasse
    @aescasse Год назад +1

    капец очень понятные и логичные объяснения

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

    Спасибо за урок, теперь знаю больше. Думаю такими темпами, к концу года все таки стану мидлом, а то уже засиделся на позиции джуна =)

  • @user-eq1bl3xt5c
    @user-eq1bl3xt5c 3 года назад +2

    просто поставлю 100 тый комментарий

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

    Спасибо за урок! интересно , досмотрю ли я этот курс до конца =/

  • @gamemoments8183
    @gamemoments8183 4 года назад +3

    автор спасибо ! вот скажите сколько будет уроки и это примерно сколько времени займет например год или 2 года

  • @DARKNETOFFICIAL
    @DARKNETOFFICIAL 3 года назад +4

    То чувство когда даже с In твой ведро ПК выполнял код 30 секунд

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

    Сергей здравствуйте! А вы не хотите сделать курс по Java? Говорят она похожа на C++/C#

  • @kalipso5785
    @kalipso5785 9 месяцев назад +1

    Дошел до 45 урока, осталось почти столько же.

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

    Оптимизация программы - это одно из главных

  • @andreypan1608
    @andreypan1608 3 года назад +1

    супер

  • @D-And-A221
    @D-And-A221 2 года назад +4

    Так и не понял как ЗАПИСАТЬ данные в in, чтобы потом их извлечь. Как впихнуть то самое х=1 чтобы потом вызвать "с большей скоростью и защитой"?
    int, float, struct, string- как всё это использовать?

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

      Дмитрий через ref передается еще быстрей ( не на много, но быстрее), ну а с ref можно делать что угодно. А вот где применить in пока не знаю. Сам изучаю С# по этим урокам.

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

      По всей видимость с параметром in во входном аргументе метода переменная передается как константа. Если попытаться присвоить ей значение, V_Studio пишет, что переменная используется только для чтения. Ну и так как мы , в данном случае с in работаем в другой области памяти, то работа выполняется быстрее.

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

      Зачем ты пытаешься записать данные в то, что только для чтения? В этом то и суть, что нельзя изменять это значение

  • @AlSlTlElL
    @AlSlTlElL 4 года назад +4

    Сергей приветствую, я правильно понимаю что хорошей практикой считается использование in во всех ситуациях когда нету необходимости в методе изменять принимаемое значение? Или только в тех ситуация когда действительно нужно оптимизировать работу метода?

    • @dzmitry.herasimenka
      @dzmitry.herasimenka 4 года назад +2

      только когда нужна оптимизация, любые лишние нагорождения мешают читабельности на больших проектах (имхо)

    • @AlSlTlElL
      @AlSlTlElL 4 года назад +1

      @@dzmitry.herasimenka ок, спасибо

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

    Эквивалентно ли передавать в качестве аргумента, для которого при определении метода указан IN, переменную по ссылке с разными модификаторами: IN и REF?

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

    Можно ли инициализировать IN-аргумент при определении функции (типа инициализации по умолчанию)?

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

    👍

  • @fox__gun6420
    @fox__gun6420 3 года назад +3

    именно так и выглядят танцы программиста с бубном, что бы понять куда можно поставить 2 (!) буквы.

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

    Дякую!

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

    Можно ли передать в IN-аргумент неинициализированную переменную?

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

    4:24 распутал))

  • @user-lb2gm5jh2v
    @user-lb2gm5jh2v 4 месяца назад

    шел 3 день моего ВРЫВА в С# с ноги. Пока все отлично.

  • @akamurun6563
    @akamurun6563 Год назад +1

    Получается
    ref создаёт прямую связь между объектами
    out создаёт связь между объектами и никак иначе
    in указывает на объект, но не позволяет изменять его?

  • @5yga457
    @5yga457 3 года назад +3

    Посоветуйте литературу по С#, а то почитать тоже хочется)

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

    Модификатор in для аргумента в методе. Нужен для оптимизации. С ним мы не сможем менять значение поля, только get.

  • @liko8019
    @liko8019 3 года назад +3

    13:23 все наши усилия ахаххаха

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

    Можно ли R-value (литерал) передать в IN-аргумент?

  • @TEHNOTRAHER
    @TEHNOTRAHER 4 года назад +1

    А какой размер у ссылки?
    По идее это должно быть число типа uint или ulong(32 или 64 бита)
    То есть ссылка может весить 4 или 8 байт.
    Я правильно понимаю?

    • @dzmitry.herasimenka
      @dzmitry.herasimenka 4 года назад

      в. net ссылка на обьект весит почти всегда 4 байта(x32), 8 байт(x64) глубже знать пока и не нужно

  • @HoaqoSs
    @HoaqoSs 3 года назад +4

    почему в названии между IN и REF не стоит запятая?

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

      компилятор их всё равно не увидит

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

    Преподы в ВУЗах: "ООО а че так можно было что ли ааа..((("

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

    ? При передаче в IN-аргумент переменной, без написания рядом с ней IN (т.е. при вызове функции без указания при вызове модификатора IN для аргумента, для которого при определении функции был указан модификатор IN), НЕ ПРОИЗОЙДЕТ передача по ссылке, а произойдет передача по значению (и эффект будет такой же, как если бы не было написано IN при определении функции (метода)).

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

    это касается только значимых типов?

  • @5yga457
    @5yga457 3 года назад +3

    У меня бук полетел в далекие края от этого бенча

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

    у меня показатели : Foo 8529
    Bar 0

  • @artefakt4349
    @artefakt4349 3 года назад +4

    Ещё не видел всего урока. Но попробую угадать... Если аут это выход и в методе мы должны из-за этого слова присвоить значение, то ин (вход), видимо подразумевает, что в метод должно придти значение. Дополню после объяснения Сергея.
    Что-ж... Был не прав. Кто-бы мог подумать, что это не просто блокировка изменения данных, а ещё и такой (по моему мнению после бэнчмарка) мощный ускоритель!
    Ха! Первый бэнч = 9700 и 8420. Теперь я могу прикинуть, что мой компьютер слабее компьтера Сергея примрно в 2 раза.
    52900 и 9530 жжжуть!

  • @Maks-hb6wg
    @Maks-hb6wg 3 года назад +1

    Что мне делать ? Я скачал бесплатную версию visual studio. И через месяц мне пришло сообщение что пробная версия для ознакомительных целей скоро закончиться и я потеряю доступ к данному продукту. Неужели дальше платить придется ?

    • @vitaliy1773
      @vitaliy1773 3 года назад

      Можешь просто в ютубе загуглить ключ на вижуал студио.Мне помогло

    • @dzmitry.herasimenka
      @dzmitry.herasimenka 3 года назад +2

      visual studio community версия бесплатная, и не нужно ключей.

    • @oleksandralekseiev8370
      @oleksandralekseiev8370 3 года назад +4

      все абсолютно бесплатно, просто надо будет подключить к вижле свой аккаунт. Тебе обо всем расскажут, там только почта нужна вроде как

    • @Roni_Gerto
      @Roni_Gerto 3 года назад

      Прост зарегайся

  • @alfany6252
    @alfany6252 4 года назад +1

    А in в аргументе оператора foreach - это другое?

    • @dzmitry.herasimenka
      @dzmitry.herasimenka 4 года назад

      другое) foreach это якобы синтаксический сахар, он разворачивается в цикл while потом

  • @user-od5ub1mx4k
    @user-od5ub1mx4k 3 года назад +1

    Спасибо за уроки!) Кстати, кто знает почему у меня в Visual Studio Пропали цвета, раньше метод WriteLine был желтым, как на видео, а сейчас он белого цвета, так же for был розовый, а сейчас синий, подскажите пожалуйста как исправить, немного сложно привыкать к этому))

    • @vitaliy1773
      @vitaliy1773 3 года назад +1

      Так не должно быть это проблема.

    • @ustaagvan
      @ustaagvan 3 года назад +1

      Может быть ты как то сменил тему оформления, может и такой вариант

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

    3:35 запутал...

  • @vael6555
    @vael6555 21 день назад

    В c# 12 добавили ref readonly, вот тут то и непонятно его отличии от in

  • @sabatonbaton6105
    @sabatonbaton6105 3 года назад +5

    О боже как я орнул с "Все вот наши усилия"

  • @user-kb6qd8rg4g
    @user-kb6qd8rg4g 4 года назад +4

    Комментарии, комментарии, комментарии

  • @mentha654
    @mentha654 9 месяцев назад +2

    Реклама модификатора in на протяжении 15 минут 51 секунды смотреть бесплатно без смс и регистрации

  • @user-ze3hz5sk2b
    @user-ze3hz5sk2b Год назад

    Кто не совсем понимает зачем нужен IN, попробую привести пример.
    Что бы подобрать в игре какую то плюшку, например чекпоинт, нужно постоянно проверять координаты игрока и расстояние между ним и чекпоинтом. Это все происходит постоянно и быстро. Вот и оптимиция. Ибо таких чекпоинтов может быть очень много.

    • @-unity-
      @-unity- Год назад +1

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

  • @user-cp8fy7qm5l
    @user-cp8fy7qm5l 3 года назад +2

    А будет ли си шарп для юнити?

    • @-unity-
      @-unity- Год назад

      Это и есть си шарп для юнити. А заодно и си шарп для всего остального. Или ты думаешь, что в Юнити какой-то особый шарп используется?