МОДИФИКАТОР 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 #урокипрограммирования
Cамый лучший способ сказать "спасибо" - поставить лайк и и поделиться уроком с друзьями. Это очень мотивирует создавать полезные уроки =)
✅Доступ к исходному коду и спонсорство www.patreon.com/SimpleCode
✅ donatepay.ru/don/SimpleCode
✅BTC кошелек: 12oYfJnvt76wjJbpvfhM41m6KPz6uz4LD4
У меня нет высшего образование (только 11 классов) Раньше пробовал, что-то программировать в кавычках. Но серьезно изучать С++ начал 3,5 года назад. Твои видео уроки сдвинули меня с мертвой точки. Они научили меня правильно задавать вопросы и находить на них ответы. Пол года назад прошел собеседование - теперь я джуниор. Спасибо тебе огромное.
Круто, мотивирует двигаться дальше!!)))
Думаю будет правильно выразить материальную благодарность автору, который своим трудом так помог вам)
А щас кто?
как то ты долго изучал
@@klabukov_dmitry Да я об этом думал, и думаю. Хочу это сделать, когда мой первый, серьезный проект выйдет из dev.
*Я человек простой, вижу видео Сергея - ставлю лайк!*
Сергей, я сейчас всех рассмешу! Всегда восхищалась IT-шниками и завидовала их увлекательной работе!😄😄😄😄😄. Не было времени начать учиться, да и страшно, что всё равно ничего не пойму! Всё началось с вашего плейлиста по HTML. Решила первый послушать✌✌✌✌✌. Пока ещё 2 недели изучаю и пока всё понятно. Правда сижу сутками🐸🐸🐸🐸🐸🐸🐸. Благо, что на пенсии!!! Какое это прекрасное время ПЕНСИЯ👍👍👍👍👍👍. Правда, времени, что до, что после, как уволилась с должности - НЕ ХВАТАЕТ🙊🙊🙊🙊🙊🙊. А у Вас прирожденный Дар преподавать✌✌✌✌✌✌.СПАСИБО❤❤❤❤❤❤
@@BasicD2002 Уже сениор хах как видишь
Сейчас закрываю сессию, нет времени смотреть. Но всегда захожу и ставлю лайк, когда вижу новое видео. Спасибо за то, что вы делаете!!
Классно объяснил всего за 15 минут на простых и понятных примерах
Сергей, салюют!
Спасибо тебе огромное за информативные лекции!!!
Каждый день ты спасаешь миллионы студентов на сессии! =))
Господи насколько же это качественное пояснение. Очередное спасибо)!
Спасибо тебе большое! Думаю даже на платных курсах мне бы так не объяснили. Серьезно, из уроков на Ютубе - это самые топ!
Очень годно.
До этого думал, что это только лишь чтобы обезопасить входящие данные от изменений.
Поддерживающий комментарий для развития канала
Объяснение, как всегда на высоте)Спасибо
Дождался нового урока) Благодарю вас Сергей за данный курс, вы мне очень помогли!
Крутейше объясняешь. Ты топ! Спасибо тебе)
Только вчера прочитал эту тему, спасибо!
Сергей, спасибо огромное! You are breathtaking!
лучший канал о программировании!!!
Всегда удивляюсь наличием "Не нравится" от 3-6 шт, кто эти люди??? Спасибо Автору за ценный контент и развернутое пояснение.
В последние время на ТыТрубе смотрю почти только ваш канал)
Гениально и просто! Вы всегда можете доходчиво и интересно объяснить то, что казалось до этого сложным и непонятным)))Спасибо огромное за ваш труд, не останавливайтесь !!!
Отличный урок!
Благодарю!!!
Благодарю, Сергей!
Огромное спасибо!
Спасибо за уроки.
Почаще бы выходили!!!
В универе и то меньше информации про такие вещи, а вам спасибо за это
Спасибо за ролик!
Большое спасибо!
Спасибо за урок!
Спасибо за урок
Благодарю за урок.
Спасибо
Спасибо за наглядный тест) Теперь все понятно
Спасибо. Все очень доступно и подробно объясняешь. 👍
Спасибо за урок!
Было полезно и интересно.
Спасибо, Сергей! Твой труд заслуживает большего!
Спасибо)
Благодарю!
Спасибо !!!
Great lessons! Wish there will be continuation!
В очередной раз, спасибо за урок. От себя хочу добавить что IN не всегда может не менять значение. Если в качестве параметра будет выступать значимый тип (структура, энам), то данные в параметре изменить никак не получиться => и данные начальной переменной изменить в методе не удастся. Но если, в качестве параметра будет выступать ссылочный тип (классы), то сами данные, которые в куче изменить можно, а вот ссылку модифицировать никак нельзя. Т.е то что находиться в Стэке он модифицировать отказывается
Самый наглядный пример оптимизации) Спасибо :b
Thanks for teaching us, it's really simple and help to understood.
аааа как же я уже хочу ООП
Отлично!
Спасибо!
Большое спасибо за урок, а какие вы книги посоветуете для изучения C#?
Серега
Ты лучший!!!!
А не происходит ли неявной операции boxing-а при передаче параметра структурного типа с ключевыми словами ref,out,in ?
Сергей, доброго времени суток. Занимаюсь по Вашим урокам, очень доходчиво объясняете. Интересно знать, Вы работаете с# программистом или работали таковым?
Очень полезный, легкий и интересный урок. Спасибо Сергей. Интересно в плюсах константная ссылка может дать такой же еффект? )
Круто
Прогнал бенчмарк на своём компе и разница составила ~1000мс между методами. Значния были 8,5к и 7,5к соответственно.
Думаю тут ещё не маловажную роль играет скорость ОЗУ разница между DDR3 и DDR4 существенная.
моему компуктеру понадобилось 30 и 7 сек на подсчет . тяжеловато старичку приходится)
У меня вообще 43 и 9
Thank you
Не понял, почему, когда работаем с Foo, данные будут копироваться?
капец очень понятные и логичные объяснения
Спасибо за урок, теперь знаю больше. Думаю такими темпами, к концу года все таки стану мидлом, а то уже засиделся на позиции джуна =)
просто поставлю 100 тый комментарий
Спасибо за урок! интересно , досмотрю ли я этот курс до конца =/
автор спасибо ! вот скажите сколько будет уроки и это примерно сколько времени займет например год или 2 года
То чувство когда даже с In твой ведро ПК выполнял код 30 секунд
Сергей здравствуйте! А вы не хотите сделать курс по Java? Говорят она похожа на C++/C#
Дошел до 45 урока, осталось почти столько же.
Оптимизация программы - это одно из главных
супер
Так и не понял как ЗАПИСАТЬ данные в in, чтобы потом их извлечь. Как впихнуть то самое х=1 чтобы потом вызвать "с большей скоростью и защитой"?
int, float, struct, string- как всё это использовать?
Дмитрий через ref передается еще быстрей ( не на много, но быстрее), ну а с ref можно делать что угодно. А вот где применить in пока не знаю. Сам изучаю С# по этим урокам.
По всей видимость с параметром in во входном аргументе метода переменная передается как константа. Если попытаться присвоить ей значение, V_Studio пишет, что переменная используется только для чтения. Ну и так как мы , в данном случае с in работаем в другой области памяти, то работа выполняется быстрее.
Зачем ты пытаешься записать данные в то, что только для чтения? В этом то и суть, что нельзя изменять это значение
Сергей приветствую, я правильно понимаю что хорошей практикой считается использование in во всех ситуациях когда нету необходимости в методе изменять принимаемое значение? Или только в тех ситуация когда действительно нужно оптимизировать работу метода?
только когда нужна оптимизация, любые лишние нагорождения мешают читабельности на больших проектах (имхо)
@@dzmitry.herasimenka ок, спасибо
Эквивалентно ли передавать в качестве аргумента, для которого при определении метода указан IN, переменную по ссылке с разными модификаторами: IN и REF?
Можно ли инициализировать IN-аргумент при определении функции (типа инициализации по умолчанию)?
👍
именно так и выглядят танцы программиста с бубном, что бы понять куда можно поставить 2 (!) буквы.
Дякую!
Можно ли передать в IN-аргумент неинициализированную переменную?
4:24 распутал))
шел 3 день моего ВРЫВА в С# с ноги. Пока все отлично.
Получается
ref создаёт прямую связь между объектами
out создаёт связь между объектами и никак иначе
in указывает на объект, но не позволяет изменять его?
Посоветуйте литературу по С#, а то почитать тоже хочется)
Библия С#
Модификатор in для аргумента в методе. Нужен для оптимизации. С ним мы не сможем менять значение поля, только get.
13:23 все наши усилия ахаххаха
Можно ли R-value (литерал) передать в IN-аргумент?
А какой размер у ссылки?
По идее это должно быть число типа uint или ulong(32 или 64 бита)
То есть ссылка может весить 4 или 8 байт.
Я правильно понимаю?
в. net ссылка на обьект весит почти всегда 4 байта(x32), 8 байт(x64) глубже знать пока и не нужно
почему в названии между IN и REF не стоит запятая?
компилятор их всё равно не увидит
Преподы в ВУЗах: "ООО а че так можно было что ли ааа..((("
? При передаче в IN-аргумент переменной, без написания рядом с ней IN (т.е. при вызове функции без указания при вызове модификатора IN для аргумента, для которого при определении функции был указан модификатор IN), НЕ ПРОИЗОЙДЕТ передача по ссылке, а произойдет передача по значению (и эффект будет такой же, как если бы не было написано IN при определении функции (метода)).
это касается только значимых типов?
У меня бук полетел в далекие края от этого бенча
у меня показатели : Foo 8529
Bar 0
Ещё не видел всего урока. Но попробую угадать... Если аут это выход и в методе мы должны из-за этого слова присвоить значение, то ин (вход), видимо подразумевает, что в метод должно придти значение. Дополню после объяснения Сергея.
Что-ж... Был не прав. Кто-бы мог подумать, что это не просто блокировка изменения данных, а ещё и такой (по моему мнению после бэнчмарка) мощный ускоритель!
Ха! Первый бэнч = 9700 и 8420. Теперь я могу прикинуть, что мой компьютер слабее компьтера Сергея примрно в 2 раза.
52900 и 9530 жжжуть!
Что мне делать ? Я скачал бесплатную версию visual studio. И через месяц мне пришло сообщение что пробная версия для ознакомительных целей скоро закончиться и я потеряю доступ к данному продукту. Неужели дальше платить придется ?
Можешь просто в ютубе загуглить ключ на вижуал студио.Мне помогло
visual studio community версия бесплатная, и не нужно ключей.
все абсолютно бесплатно, просто надо будет подключить к вижле свой аккаунт. Тебе обо всем расскажут, там только почта нужна вроде как
Прост зарегайся
А in в аргументе оператора foreach - это другое?
другое) foreach это якобы синтаксический сахар, он разворачивается в цикл while потом
Спасибо за уроки!) Кстати, кто знает почему у меня в Visual Studio Пропали цвета, раньше метод WriteLine был желтым, как на видео, а сейчас он белого цвета, так же for был розовый, а сейчас синий, подскажите пожалуйста как исправить, немного сложно привыкать к этому))
Так не должно быть это проблема.
Может быть ты как то сменил тему оформления, может и такой вариант
3:35 запутал...
В c# 12 добавили ref readonly, вот тут то и непонятно его отличии от in
О боже как я орнул с "Все вот наши усилия"
Комментарии, комментарии, комментарии
Реклама модификатора in на протяжении 15 минут 51 секунды смотреть бесплатно без смс и регистрации
Кто не совсем понимает зачем нужен IN, попробую привести пример.
Что бы подобрать в игре какую то плюшку, например чекпоинт, нужно постоянно проверять координаты игрока и расстояние между ним и чекпоинтом. Это все происходит постоянно и быстро. Вот и оптимиция. Ибо таких чекпоинтов может быть очень много.
"нужно постоянно проверять координаты игрока и расстояние между ним и чекпоинтом" - не нужно, если используется какой-нибудь нормальный игровой фреймворк типа Unity. В нём ты один раз устанавливаешь на игрока и чекпоинты коллайдеры (это такие компоненты, которые обозначают границы объекта). И после того, как один объект попадает в границы другого, срабатывает функция, тобою же и назначенная для этого. Код получается очень чистым, без всяких проверок на координаты и расстояния.
А будет ли си шарп для юнити?
Это и есть си шарп для юнити. А заодно и си шарп для всего остального. Или ты думаешь, что в Юнити какой-то особый шарп используется?