КЛЮЧЕВОЕ СЛОВО REF C# | C# ref что это и для чего нужно | C# ОТ НОВИЧКА К ПРОФЕССИОНАЛУ | # 43
В этом уроке мы изучим ключевое слово ref в языке программирования C#, выясним для чего оно нужно, как используется, как ref работает для ссылочных типов и для значимых типов, а так же последние нововведения относительно модификатора ref в последних версиях языка программирования C#.
✅Домашнее задание к уроку bit.ly/3eEPwAZ
✅ССЫЛОЧНЫЕ И ЗНАЧИМЫЕ ТИПЫ C# | СТЕК И КУЧА C# | REFERENCE AND VALUE TYPES C# | C# Уроки | # 38 bit.ly/3ckSKI4
✅ЧТО ТАКОЕ NULL | C# ОТ НОВИЧКА К ПРОФЕССИОНАЛУ | # 39 bit.ly/3dmDFXO
✅Если вам нравятся мои уроки, вы хотите поддержать меня и развитие канала, то можете сделать это тут!=)
✅Доступ к исходному коду и спонсорство / simplecode
✅ donatepay.ru/don/SimpleCode
✅BTC кошелек: 12oYfJnvt76wjJbpvfhM41m6KPz6uz4LD4
✅ Telegram канал t.me/SergeySimpleCode
✅Наша группа ВК smplcode
✅Подписывайтесь на канал / @simplecodeit
#сишарп #simplecode #урокипрограммирования #ref
Пікірлер: 260
Cамый лучший способ сказать "спасибо" - поставить лайк и и поделиться уроком с друзьями. Это очень мотивирует создавать полезные уроки =) ✅Доступ к исходному коду и спонсорство www.patreon.com/SimpleCode ✅ donatepay.ru/don/SimpleCode ✅BTC кошелек: 12oYfJnvt76wjJbpvfhM41m6KPz6uz4LD4
что-что, а объяснять сложное простым языком у вас получается. таких бы людей везде: и в школах, и в универах, и на ютубе)
@user-wr2dp7ip5g
2 жыл бұрын
Тут
@user-wr2dp7ip5g
2 жыл бұрын
Тут
Три раза(от начала до конца) пересмотрел этот урок, только потом начал понемногу понимать.
@user-gh2ml3cf5o
2 жыл бұрын
Аналогично
@rox7fox
Жыл бұрын
буквально также посмотрел 3 раза:D
@Idkdkdw
9 ай бұрын
Хз я сразу понял
Ураа! Новый урок! Спс от души просто!!! Боялся что ты забросишь уроки.
Спасибо за урок!) Ждем List)
Спппасибо дяде Сереже за достойный контент
Благодарность огромная,учусь по твоим урокам,и другим советую твой канал, который лучший на ютубе по языку с#👍
@minoddein7205
4 жыл бұрын
Кхм-кхм...CodeBlog 🔝
@minoddein7205
4 жыл бұрын
Но,здесь есть плюсы,Сергей раскрывает все детали каждой темы просто и понятно.Но очень долго ждать новых видео-уроков,пока до тех же делегатов дойдем...эх...Ну и практических заданий бы.
@HaruaTop-kw8so
4 жыл бұрын
@@minoddein7205 у codebloge тоже все понятно но code blog мастер обьяснять простве вещи на протяжение часа
Я человек простой. Вижу видео Сергея, сразу поставлю лайк)
Большое спасибо за урок! Жду новых!
Если бы можно было ставить лайк не видео отдельно а всему каналу сразу, я бы автору его поставил... перечитал кучу книг и перепробовал кучу софта с самообучением программированию, но здесь подача просто божественная
Ссылка на ссылку.... аж ностальгия по С++ пробила) Спасибо!!!
Спасибо за урок!
Сергей, спасибо за урок! Как всегда всё понятно и вообще супер!)
Один из лучших курсов! Спасибо, что делитесь знаниями!
Ты не представляешь, как ты мне помог разобраться во многих темах, большое тебе человеческое спасибо!
Спасибо большое за уроки
Спасибо тебе искренне!
Сергей, спасибо вам за урок! Сделайте пожалуйста следующий выпуск про использование выходного параметра out.
Отличные уроки, спасибо! Я в C# хоть и не новичок, но тоже очень полезно пересмотреть. Очень часто наталкиваюсь на что-то новое о существовании которого и не догадывался, а делал раньше по старинке.
спасибо! все уроки - очень понятным языком
Как много слов , как много информации . Но под конец урока всё таки смог осознать принцип работы этого ref.Спасибо за урок !)
Спасибо за ваши старания!
Благодарю!
Очень понятно и классно разъяснил. Спасибо большое.
Как всегда классный урок)
спасибо Сергей !!!
Раньше смотрел в основном англоязычный ютуб, но тут попались вы Сергей и очень понравилось, как вы объясняете. Теперь буду смотреть и вас после этого урока)
Спасибо за отличные уроки и домашнее задание =)
Ура, новый видос!)
Спасибо тебе за эти уроки! Очень внятно и доступно
Мы встроили тебе ссылку в ссылку, чтобы ты мог передавать одну ссылку, пока находишься в другой ссылке)
Огромнейшее спасибо! Такую сложную тему так легко раскидать! Это талант! Огромное спасибо! Мира вашему дому.
Благодарю за урок.
нереально круто обьясняет, в начале урока думал ну пиздец приплыли... и ближе к 22-й минуте я начинал понемногу понимать. это некий симпл в мире кодирования, как симпл в кс го
Очень долго ждал этот урок
Спасибо большое за видео)))
Обалдеть, чуствую себя самым умным на свете после того как всё понял
@ZuraevD
10 ай бұрын
хахах, понимаю
@vladimir_pl
10 ай бұрын
А ДЗ смог сделать ?
@ZuraevD
10 ай бұрын
@@vladimir_pl я нет😂, только первое
@makesuprise8259
6 ай бұрын
@@ZuraevD как успехи
@ZuraevD
6 ай бұрын
@@makesuprise8259 норм, курс то я этот второй раз пересматривал. Ща пока остановился, другие предметы по возможности закрываю. Ну вообще да, обленился я
Как же круто ты объясняешь.
Спасибо за урок
Спасибо! Шикарное объяснение
Спасибо. Полезно и позновательно.
Спасибо за урок! Всё просто супер!)) Получаю кайф от выполненного дз чисто мной)
Я познал истину ! Спасибо, Сэнсэй !
наконец-то я поняль! Спасибо, Серега!
Спасибо, Сергей! Уф....Ну что могу сказать... Два дня с перерывами ломал голову. После завершения, понял что хоть я и указываю слово fer, но абсолютно его не использую. А так все работает. Понимаю, что не плохо было бы предусмотреть некоторые особенности (например при получении массива с 0 элементов, программа выдаст ошибку, тк попытается убрать еще один элемент в массиве без элементов), но в контексте моей программы, это невозможно. static int[] Resize (ref int[] FirstArr) { Console.WriteLine(" Массив какого размера вам нужен? Введите число элементов :"); int YourElements = int.Parse(Console.ReadLine()); int[] FinalArr = new int[YourElements]; for (int i = 0; i { if (i FinalArr[i] = FirstArr[i]; else FinalArr[i] = 0; } return FinalArr; } static int[] Add (ref int[] FirstArr) { Console.WriteLine(" 1 - добавить первый элемент 2 - добавить элемент по индексу 3 - добавить последний элемент"); int[] FinalArr = new int[FirstArr.Length+1]; int YourChoiсe2 = int.Parse(Console.ReadLine()); if (YourChoiсe2==1) { Console.WriteLine(" Новый элемент добавлен в начало массива, какое значение ему присвоить?"); int AddElem = int.Parse(Console.ReadLine()); for (int i = 0; i if (i FinalArr[i+1] = FirstArr[i]; FinalArr[0] = AddElem; } if (YourChoiсe2==2) { Console.WriteLine(" Элемент с каим индексом требуется добавить?"); int IndexOf = int.Parse(Console.ReadLine()); Console.WriteLine(" Какое значение требуется присвоить этоиу элементу?"); int AddElem = int.Parse(Console.ReadLine()); for (int i = 0; i { if (i FinalArr[i] = FirstArr[i]; } FinalArr[IndexOf] = AddElem; } if (YourChoiсe2==3) { Console.WriteLine(" Новый элемент добавлен в конец массива, какое значение ему присвоить?"); int AddElem = int.Parse(Console.ReadLine()); for (int i = 0; i { if (i FinalArr[i] = FirstArr[i]; } FinalArr[^1] = AddElem; } return FinalArr; } static int[] Delete(ref int[] FirstArr) { Console.WriteLine(" 1 - удалить первый элемент 2 - удалить элемент по индексу 3 - удалить последний элемент"); int[] FinalArr = new int[FirstArr.Length - 1]; int YourChoiсe2 = int.Parse(Console.ReadLine()); if (YourChoiсe2 == 1) { Console.WriteLine(" Первый элемент массива удален"); for (int i = 0; i FinalArr[i] = FirstArr[i+1]; } if (YourChoiсe2 == 2) { Console.WriteLine(" Элемент с каим индексом требуется удалить?"); int IndexOf = int.Parse(Console.ReadLine()); for (int i = 0; i { if (i != FirstArr.Length) FinalArr[i] = FirstArr[i]; } } if (YourChoiсe2 == 3) { Console.WriteLine(" Последний элемент массива удален"); for (int i = 0; i { FinalArr[i] = FirstArr[i]; } } return FinalArr; } static void Main(string[] args) { int[] FirstArr = { 1, 2, 3 }; int[] FinalArr = new int[0]; Console.WriteLine(" Создан массив { 1 2 3}"); Console.WriteLine(" Вы можете выбрать одно из трех действий"); Console.WriteLine(" 1 - изменить размер массива 2 - добавить элемент в массив 3 - удалиь элемент массива"); int youChoise0 = int.Parse(Console.ReadLine()); if (youChoise0 == 1) FinalArr = Resize (ref FirstArr); if (youChoise0 == 2) FinalArr = Add (ref FirstArr); if (youChoise0 == 3) FinalArr = Delete (ref FirstArr); Console.WriteLine("Ваш массив :" ); for (int i = 0; i { if (i==0)Console.Write("{"); Console.Write(FinalArr[i] + " "); if (i == FinalArr.Length-1)Console.Write("}"); } Console.WriteLine(); Console.WriteLine("Размер массива " + FinalArr.Length); Console.WriteLine("Сумма элементов в массиве " + FinalArr.Sum());
Отличное видео, отличный парень!
spasibo za urok, ochen interesno
Не знал, спасибо за труд!
большое спасибо за столь подробное объяснение
На нашем направлении в универе старшекурсники и преподаватели рекомендуют твои уроки!
Сергей, привет! Сразу лайк, но посмотрю позже)))
На каждое видео по csharp ставлю лайк. Спасибо большое за такие понятные уроки, читаю параллельно книгу по unity и еще одну книгу просто про csharp, если бы не ваши уроки, то врятли что-то поняла еще на стадии переменных! Там хоть и стараются авторы писать очень простым языком, но все равно у вас нагляднее и понятнее, возможно еще и потому что вы подаете материал дозированно.
@WiNpasta
3 жыл бұрын
подскажи по юнити книгу
Ты просто бомба!! 💣 👍
Отлично!
закипел я на этом видосе, особенно под конец.
спасибо. очень четко.
Единственное, что хотелось бы уточнить - иногда даже с ref происходит копирование Value Type'ов и все тут. Например, если структуру инициализировать не с помощью конструктора, а с помощью инициализатора - там можно словить movdqu/movdqa/vmovdqu. Там много условий должно совпасть чтобы это произошло и на поведение программы это не влияет, но может повлиять на производительность.
Комментарии в поддержку канала. Просьба не забрасывать это дело и конкретно курс по C#.
миллион раз спасибо
Спасибо за видео и лайк! Сергей, хотелось бы больше практических заданий или ссылку где их брать. Так же было бы интересно , чтоб Вы объяснили , что ещё нужно параллельно учить с языком С# в дополнении. Или пока только эти знания, а потом ещё, что-то?
Благодарю
16:35 - Недавно столкнулся с такой проблемой по незнанию. У меня это прям головную боль вызвало, почему передавая объект класса в метод тот на выходе ничего не менял. Оказалось ровно то, что Вы объяснили в видео, то есть нужно указывать ref в подобных ситуациях даже для ссылочных данных
Спасибо .
Спасииибо!
Спасибо
Спасибо!
Спасибо !!!
Я только начал своё изучение С# Спасибо за понятные и чёткие уроки. Надеюсь ты не забросиш это дело и доведёш всё до конца👍💪💪
@ptichkasinichkamia
Жыл бұрын
как результат за 2 года?
@egormcfly2529
9 ай бұрын
@@ptichkasinichkamia зарабатывает 300к в наносекунду
Спасибо вам ❤😍
йоу йоу йоу новый урок))) когда закончились твои уроки начал бегать по всему ютубу как дворняга(
смотрел этот урок 3 года назад и все было понятно, когда сам столкнулся с этой проблемой пересмотрел и понял все, на все 100%
Поддерживающий комментарий для дальнейшего развития канала
Самый лучший обьяснятор на ютубе
Спасибо большое
Красава
Идея для следующего видео по Windows Forms: приложение, которое рисует фрактальное дерево, при чём пользователь сам задаёт изначальную длину ветки, делитель каждой следующей ветки, угол поворота и т.д.
Сложная тема :) Спасибо что много примеров! Лучшие уроки!
@ptichkasinichkamia
Жыл бұрын
я тоже учу сейчас на этом месте)
@ptichkasinichkamia
Жыл бұрын
Давно начал учить C#?
@user-ir5ut4tq3e
Жыл бұрын
@@ptichkasinichkamia Я его учил года 2 назад тоже по урокам в ютубе, но от Гоши Дударя(2 месяца занимался). Потом забросил, и вот недавно (месяц назад) открыл для себя SimpleCode. Объясняет он на уровень выше чем Дударь и в целом то что я учил 2 года назад оно помогло освежить большинство тем которые были в начале этого курса. Но дойдя до темы null и ref тут я уже как бы столкнулся с чем то новым) Интересно и сложно. Щас сижу пыхчу над домашкой ХD
@ptichkasinichkamia
Жыл бұрын
@@user-ir5ut4tq3e я тоже сейчас её делаю
@user-ir5ut4tq3e
Жыл бұрын
@@ptichkasinichkamia Осталось сделать удаление элементов массива с начала, конца и по индексу.
Спасибо, понял с 1 раза
лучший в своём деле
Читаю комменты и виду что люди понимают и пишут что все понятно. А я понял только половину с 3 раза. Но я не сдамся, буду смотреть пока не пойму. Все остальное было проще понять.
Дам совет для начинающих и тем у кого есть еще не большой опыт. Видео помогает на более лёгкоммастерства
Нашел этот канал случайно, всё довольно доходчиво, но некоторые моменты я иногда не понимаю, и сижу с вопросом в голове ""а зачем так делать если это совсем не нужно"" к чему, я ПЫТАЮСЬ понять язык, но даётся с трудом, особенно какие то моменты, например с дз, просматривая тему, вроде бы как в голове отложилось, и порой понимаешь , что куда откуда и для чего, находишь некую связь, НО когда пытаюсь написать что то сам, например попробовать сделать дз, я вступаю в некий ступор, я не знаю с чего начать, что делать, что за чем следует, как проявить ту или иную задачу в голове. (надеюсь я дойду до уровня когда хотяб начну понимать). Но когда смотрю как ты выполнил дз, я сижу и думаю, так надо было делать так,и как бы понимаю весь код,я могу понять что куда и откуда, но сам писав код, затрудняюсь это делать, дай пару советов, как перебороть в себе этот момент со ступором. По урокам притензий не может, всё довольно доходчиво и хороший голос на слух, но я тупой ))) дай совет!!!
@bogdansalogub8303
3 жыл бұрын
Значит ты не понимаешь, как строится структура самой программы( какая область видимости за что отвечает, где писать методы, а где основной код и тд). Пересмотри первые видосы или просто пиши простые программки по типу додать 2 числа, и постепенно добавляй в них что-то еще(например вывод сообщения). По сути, тебе просто не хватает практики. Вбиваешь в интернете задачки по с# и делаешь одну за другой)
@hryhoriinevmerzhytskyi4299
Жыл бұрын
як твої успіхи через рік?
@LaggeRYT
3 ай бұрын
угар хотите ? прошло три года а я до сих пор учу )))))))
оч круто
вери найс!
Спасибо большое за урок) Скоро ли будет ООП?
thanks
блин, я сейчас только на 11 уроке, решил посмотреть последний урок.... Да, надеюсб в скором времени я во всем этом буду хорошо разбираться, кстати ты клево объясняешь
Чел ты гений, смотрю для ознакомления и понимаю, что тебе цены не было бы в моем унике
Вы, тут все какие - то ковбои!
Кто хочет задание какое то выполнить, попробуйте такое. Сделайте змейку. Ставится точка, и от нее уже последующая, после последующей еще одна и.тд.... Для поворотов(Их 4) используйте методы, для методов нужно будет указывать ref, пример работы гляньте у меня) Игрался долго с такой штукой(код так же скину). (Все должно быть в .Net Core) не фреймворк.
Указатели плюсов это что-то новое для шарпа)
Ура дз))
Больше домашек, ушло 4 дня на решение всех, но очень понравилось. Самые сложные - это задания по элементам. Оба решения по элементам, добавлению и удалению, почему-то получились разные. Последнее в разы короче вышло.
@maratyakupov3546
Жыл бұрын
А как вам удалось изменить размер массива, не затрагивая при этом другие его элементы и их значения? Как вы смогли ввести изменения в длину массива без метода Resize? Подскажите, я в отчаянии.
Добрый день! Благодаря Вашим видео легче учить С#, но все же заметил один интересный момент,подскажите пожалуйста,если Вам не сложно) Дело в том,что когда использую структуру,то так как она не является статичной,то и метод Foo не видит её. Когда же вписываю публичные статические переменные,то метод начинает видеть их. На Вашем видео же вроде не обязательно ставить static перед переменными,когда у меня же требуется в Visual Studio. Немного не понял, почему так произошло,в любом случае с удовольствием буду продолжать смотреть Ваши видео)
Можно это интерпретировать вот так: ref создает еще одно поле в оперативной памяти рядом со стеком, где лежат ссылки на значимые(value type) объекты. Если в голове всё представить именно так, то как и в случае с интерпретацией многомерных массивов как полок с тетрадями, всё очень легко усваивается. Надеюсь кому-то помог)
Хороший урок. Полезный, интересный и без забегания на 100500 шагов вперёд. Спасибо Сергей!
Нничего себе, что у тебя за статистика по лайки/дизлайки(1100/1) ?)
Ооо да
Хочу ответить словами киногероя по youtube запросу: Дядя Джуниор - Клан сопрано xD придется пересматривать несколько раз)
Наконец то я узнал, зачем он нужен