КЛЮЧЕВОЕ СЛОВО REF C# | C# ref что это и для чего нужно | C# ОТ НОВИЧКА К ПРОФЕССИОНАЛУ | # 43

แชร์
ฝัง
  • เผยแพร่เมื่อ 13 ต.ค. 2024
  • В этом уроке мы изучим ключевое слово ref в языке программирования C#, выясним для чего оно нужно, как используется, как ref работает для ссылочных типов и для значимых типов, а так же последние нововведения относительно модификатора ref в последних версиях языка программирования C#.
    ➡️ Мой курс C# ОТ НОВИЧКА К ПРОФЕССИОНАЛУ на Udemy
    👉 www.udemy.com/...
    ✅Домашнее задание к уроку bit.ly/3eEPwAZ
    ✅ССЫЛОЧНЫЕ И ЗНАЧИМЫЕ ТИПЫ C# | СТЕК И КУЧА C# | REFERENCE AND VALUE TYPES C# | C# Уроки | # 38 bit.ly/3ckSKI4
    ✅ЧТО ТАКОЕ NULL | C# ОТ НОВИЧКА К ПРОФЕССИОНАЛУ | # 39 bit.ly/3dmDFXO
    ✅Если вам нравятся мои уроки, вы хотите поддержать меня и развитие канала, то можете сделать это тут!=)
    ✅Доступ к исходному коду и спонсорство / simplecode
    ✅ donatepay.ru/d...
    ✅BTC кошелек: 12oYfJnvt76wjJbpvfhM41m6KPz6uz4LD4
    ✅ Telegram канал t.me/SergeySim...
    ✅Наша группа ВК smplcode
    ✅Подписывайтесь на канал / @simplecodeit
    #сишарп #simplecode #урокипрограммирования #ref

ความคิดเห็น • 260

  • @SimpleCodeIT
    @SimpleCodeIT  4 ปีที่แล้ว +35

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

  • @capri_xj
    @capri_xj 4 ปีที่แล้ว +144

    что-что, а объяснять сложное простым языком у вас получается. таких бы людей везде: и в школах, и в универах, и на ютубе)

  • @thetraveler7779
    @thetraveler7779 4 ปีที่แล้ว +70

    Ураа! Новый урок! Спс от души просто!!! Боялся что ты забросишь уроки.

  • @mikkimorfin5406
    @mikkimorfin5406 4 ปีที่แล้ว +87

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

    • @minoddein7205
      @minoddein7205 4 ปีที่แล้ว +3

      Кхм-кхм...CodeBlog 🔝

    • @minoddein7205
      @minoddein7205 4 ปีที่แล้ว +6

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

    • @HaruaTop-kw8so
      @HaruaTop-kw8so 4 ปีที่แล้ว +5

      @@minoddein7205 у codebloge тоже все понятно но code blog мастер обьяснять простве вещи на протяжение часа

  • @artyomvoytenko1237
    @artyomvoytenko1237 4 ปีที่แล้ว +28

    Спасибо за урок!) Ждем List)

  • @kostya_engineer
    @kostya_engineer 2 ปีที่แล้ว +66

    Три раза(от начала до конца) пересмотрел этот урок, только потом начал понемногу понимать.

    • @ИИванов-ь6с
      @ИИванов-ь6с 2 ปีที่แล้ว +7

      Аналогично

    • @rox7fox
      @rox7fox ปีที่แล้ว +3

      буквально также посмотрел 3 раза:D

    • @ImyaFamiliya64689
      @ImyaFamiliya64689 ปีที่แล้ว

      Хз я сразу понял

  • @denissalerov8342
    @denissalerov8342 4 ปีที่แล้ว +17

    Большое спасибо за урок! Жду новых!

  • @ТимофейСидоренко-и8е
    @ТимофейСидоренко-и8е 4 ปีที่แล้ว +8

    Ты не представляешь, как ты мне помог разобраться во многих темах, большое тебе человеческое спасибо!

  • @rm5643
    @rm5643 8 หลายเดือนก่อน

    Огромнейшее спасибо! Такую сложную тему так легко раскидать!
    Это талант! Огромное спасибо! Мира вашему дому.

  • @fader79
    @fader79 4 ปีที่แล้ว +18

    Отличные уроки, спасибо! Я в C# хоть и не новичок, но тоже очень полезно пересмотреть. Очень часто наталкиваюсь на что-то новое о существовании которого и не догадывался, а делал раньше по старинке.

  • @kachgamer4432
    @kachgamer4432 3 ปีที่แล้ว +6

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

  • @ib9048
    @ib9048 4 ปีที่แล้ว +20

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

  • @elfinroom1178
    @elfinroom1178 3 ปีที่แล้ว +8

    Спппасибо дяде Сереже за достойный контент

  • @Anton-lu1pl
    @Anton-lu1pl 4 ปีที่แล้ว +6

    Один из лучших курсов! Спасибо, что делитесь знаниями!

  • @Bushido_Cat
    @Bushido_Cat 6 หลายเดือนก่อน +1

    смотрел этот урок 3 года назад и все было понятно, когда сам столкнулся с этой проблемой пересмотрел и понял все, на все 100%

  • @KorotkovaMarina
    @KorotkovaMarina 4 ปีที่แล้ว +5

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

    • @WiNpasta
      @WiNpasta 3 ปีที่แล้ว +2

      подскажи по юнити книгу

  • @emsigaming8947
    @emsigaming8947 4 ปีที่แล้ว +12

    Я только начал своё изучение С#
    Спасибо за понятные и чёткие уроки. Надеюсь ты не забросиш это дело и доведёш всё до конца👍💪💪

    • @ptichkasinichkamia
      @ptichkasinichkamia ปีที่แล้ว +3

      как результат за 2 года?

    • @egormcfly2529
      @egormcfly2529 ปีที่แล้ว +1

      @@ptichkasinichkamia зарабатывает 300к в наносекунду

  • @3x__
    @3x__ 4 ปีที่แล้ว +7

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

  • @Ivan-Shyriaiev
    @Ivan-Shyriaiev 4 ปีที่แล้ว +6

    Спасибо большое за уроки

  • @andrewwh40k49
    @andrewwh40k49 3 ปีที่แล้ว +4

    Раньше смотрел в основном англоязычный ютуб, но тут попались вы Сергей и очень понравилось, как вы объясняете. Теперь буду смотреть и вас после этого урока)

  • @dimagovorun9413
    @dimagovorun9413 ปีที่แล้ว +1

    Спасибо тебе за эти уроки! Очень внятно и доступно

  • @OrinokoRiver
    @OrinokoRiver 4 ปีที่แล้ว +5

    спасибо! все уроки - очень понятным языком

  • @ПавелБойко-ь2д
    @ПавелБойко-ь2д 3 ปีที่แล้ว +3

    Как много слов , как много информации . Но под конец урока всё таки смог осознать принцип работы этого ref.Спасибо за урок !)

  • @andromeddda847
    @andromeddda847 4 ปีที่แล้ว +11

    Сергей, спасибо за урок! Как всегда всё понятно и вообще супер!)

  • @artefakt4349
    @artefakt4349 3 ปีที่แล้ว +2

    Спасибо, Сергей!
    Уф....Ну что могу сказать... Два дня с перерывами ломал голову. После завершения, понял что хоть я и указываю слово 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 < FinalArr.Length; i++)
    {
    if (i < FirstArr.Length)
    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 < FinalArr.Length; i++)
    if (i < FirstArr.Length)
    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 < FinalArr.Length; i++)
    {
    if (i < FirstArr.Length)
    FinalArr[i] = FirstArr[i];
    }
    FinalArr[IndexOf] = AddElem;
    }
    if (YourChoiсe2==3)
    {
    Console.WriteLine(" Новый элемент добавлен в конец массива, какое значение ему присвоить?");
    int AddElem = int.Parse(Console.ReadLine());
    for (int i = 0; i < FinalArr.Length; i++)
    {
    if (i < FirstArr.Length)
    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.Length; i++)
    FinalArr[i] = FirstArr[i+1];
    }
    if (YourChoiсe2 == 2)
    {
    Console.WriteLine(" Элемент с каим индексом требуется удалить?");
    int IndexOf = int.Parse(Console.ReadLine());
    for (int i = 0; i < FinalArr.Length; i++)
    {
    if (i != FirstArr.Length)
    FinalArr[i] = FirstArr[i];
    }
    }
    if (YourChoiсe2 == 3)
    {
    Console.WriteLine(" Последний элемент массива удален");
    for (int i = 0; i < FinalArr.Length; 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 < FinalArr.Length; 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());

  • @leskhanmuratuly5374
    @leskhanmuratuly5374 3 ปีที่แล้ว +15

    Я человек простой. Вижу видео Сергея, сразу поставлю лайк)

  • @АлександрПасевич-п1ч
    @АлександрПасевич-п1ч 3 ปีที่แล้ว +13

    Ссылка на ссылку.... аж ностальгия по С++ пробила) Спасибо!!!

  • @AlexPodymov
    @AlexPodymov 2 ปีที่แล้ว +1

    Очень понятно и классно разъяснил. Спасибо большое.

  • @currydenz5542
    @currydenz5542 3 ปีที่แล้ว +4

    Спасибо за ваши старания!

  • @КириллГетьман-у2я
    @КириллГетьман-у2я ปีที่แล้ว +3

    Сложная тема :) Спасибо что много примеров! Лучшие уроки!

    • @ptichkasinichkamia
      @ptichkasinichkamia ปีที่แล้ว +1

      я тоже учу сейчас на этом месте)

    • @ptichkasinichkamia
      @ptichkasinichkamia ปีที่แล้ว

      Давно начал учить C#?

    • @КириллГетьман-у2я
      @КириллГетьман-у2я ปีที่แล้ว +3

      @@ptichkasinichkamia Я его учил года 2 назад тоже по урокам в ютубе, но от Гоши Дударя(2 месяца занимался). Потом забросил, и вот недавно (месяц назад) открыл для себя SimpleCode. Объясняет он на уровень выше чем Дударь и в целом то что я учил 2 года назад оно помогло освежить большинство тем которые были в начале этого курса. Но дойдя до темы null и ref тут я уже как бы столкнулся с чем то новым) Интересно и сложно. Щас сижу пыхчу над домашкой ХD

    • @ptichkasinichkamia
      @ptichkasinichkamia ปีที่แล้ว +1

      @@КириллГетьман-у2я я тоже сейчас её делаю

    • @КириллГетьман-у2я
      @КириллГетьман-у2я ปีที่แล้ว

      @@ptichkasinichkamia Осталось сделать удаление элементов массива с начала, конца и по индексу.

  • @RUSlTUZ
    @RUSlTUZ 4 ปีที่แล้ว +3

    16:35 - Недавно столкнулся с такой проблемой по незнанию. У меня это прям головную боль вызвало, почему передавая объект класса в метод тот на выходе ничего не менял. Оказалось ровно то, что Вы объяснили в видео, то есть нужно указывать ref в подобных ситуациях даже для ссылочных данных

  • @nrg8601
    @nrg8601 4 ปีที่แล้ว +5

    Спасибо тебе искренне!

  • @dimasavukov6230
    @dimasavukov6230 4 ปีที่แล้ว +5

    спасибо Сергей !!!

  • @oselish
    @oselish 2 ปีที่แล้ว +3

    На нашем направлении в универе старшекурсники и преподаватели рекомендуют твои уроки!

  • @ЮрийШпорхун
    @ЮрийШпорхун 3 ปีที่แล้ว +3

    Единственное, что хотелось бы уточнить - иногда даже с ref происходит копирование Value Type'ов и все тут. Например, если структуру инициализировать не с помощью конструктора, а с помощью инициализатора - там можно словить movdqu/movdqa/vmovdqu. Там много условий должно совпасть чтобы это произошло и на поведение программы это не влияет, но может повлиять на производительность.

  • @ДмитрийАлексеев-ж1г
    @ДмитрийАлексеев-ж1г 4 ปีที่แล้ว +5

    Благодарю!

  • @LaggeRYT
    @LaggeRYT 3 ปีที่แล้ว +4

    Нашел этот канал случайно, всё довольно доходчиво, но некоторые моменты я иногда не понимаю, и сижу с вопросом в голове ""а зачем так делать если это совсем не нужно""
    к чему, я ПЫТАЮСЬ понять язык, но даётся с трудом, особенно какие то моменты, например с дз, просматривая тему, вроде бы как в голове отложилось, и порой понимаешь , что куда откуда и для чего, находишь некую связь, НО когда пытаюсь написать что то сам, например попробовать сделать дз, я вступаю в некий ступор, я не знаю с чего начать, что делать, что за чем следует, как проявить ту или иную задачу в голове. (надеюсь я дойду до уровня когда хотяб начну понимать). Но когда смотрю как ты выполнил дз, я сижу и думаю, так надо было делать так,и как бы понимаю весь код,я могу понять что куда и откуда, но сам писав код, затрудняюсь это делать, дай пару советов, как перебороть в себе этот момент со ступором. По урокам притензий не может, всё довольно доходчиво и хороший голос на слух, но я тупой ))) дай совет!!!

    • @bogdansalogub8303
      @bogdansalogub8303 3 ปีที่แล้ว +2

      Значит ты не понимаешь, как строится структура самой программы( какая область видимости за что отвечает, где писать методы, а где основной код и тд). Пересмотри первые видосы или просто пиши простые программки по типу додать 2 числа, и постепенно добавляй в них что-то еще(например вывод сообщения). По сути, тебе просто не хватает практики. Вбиваешь в интернете задачки по с# и делаешь одну за другой)

    • @hryhoriinevmerzhytskyi4299
      @hryhoriinevmerzhytskyi4299 ปีที่แล้ว +1

      як твої успіхи через рік?

    • @LaggeRYT
      @LaggeRYT 6 หลายเดือนก่อน +2

      угар хотите ? прошло три года а я до сих пор учу )))))))

  • @Somebody-io1sv
    @Somebody-io1sv 3 ปีที่แล้ว +26

    Мы встроили тебе ссылку в ссылку, чтобы ты мог передавать одну ссылку, пока находишься в другой ссылке)

  • @НикитаЛазовский-э3в
    @НикитаЛазовский-э3в 3 ปีที่แล้ว +1

    нереально круто обьясняет, в начале урока думал ну пиздец приплыли... и ближе к 22-й минуте я начинал понемногу понимать. это некий симпл в мире кодирования, как симпл в кс го

  • @КуцВладислав
    @КуцВладислав 4 ปีที่แล้ว +10

    Как всегда классный урок)

  • @Hitec_asian
    @Hitec_asian 4 ปีที่แล้ว +1

    Как же круто ты объясняешь.

  • @mySchema
    @mySchema ปีที่แล้ว

    Спасибо. Полезно и позновательно.

  • @noserly1
    @noserly1 ปีที่แล้ว

    Самый лучший обьяснятор на ютубе

  • @Proffiservices
    @Proffiservices 3 ปีที่แล้ว +2

    Спасибо за видео и лайк! Сергей, хотелось бы больше практических заданий или ссылку где их брать. Так же было бы интересно , чтоб Вы объяснили , что ещё нужно параллельно учить с языком С# в дополнении. Или пока только эти знания, а потом ещё, что-то?

  • @qwerty89993
    @qwerty89993 ปีที่แล้ว

    Спасибо! Шикарное объяснение

  • @ifelru
    @ifelru 3 ปีที่แล้ว +2

    Спасибо за отличные уроки и домашнее задание =)

  • @serhiisaviiskyi2382
    @serhiisaviiskyi2382 4 ปีที่แล้ว +10

    Спасибо большое за урок) Скоро ли будет ООП?

  • @MrAlexPop69
    @MrAlexPop69 ปีที่แล้ว

    большое спасибо за столь подробное объяснение

  • @Vlaska_1
    @Vlaska_1 หลายเดือนก่อน

    офигеть, первая домашка где я не могу решить задания😮, смог только 1 задание и то без Resize(с ним у меня выходила ошибка CS0176 )

  • @fullboarduck5491
    @fullboarduck5491 4 ปีที่แล้ว +4

    Я познал истину ! Спасибо, Сэнсэй !

  • @mediafile9995
    @mediafile9995 3 ปีที่แล้ว +2

    Спасибо за урок! Всё просто супер!)) Получаю кайф от выполненного дз чисто мной)

  • @bignumber9483
    @bignumber9483 4 ปีที่แล้ว +2

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

  • @norfolkleb9851
    @norfolkleb9851 4 ปีที่แล้ว +3

    Отличное видео, отличный парень!

  • @DmitryDolganov
    @DmitryDolganov 4 ปีที่แล้ว +5

    Сергей, привет! Сразу лайк, но посмотрю позже)))

  • @chopperpopper8970
    @chopperpopper8970 3 ปีที่แล้ว +2

    Комментарии в поддержку канала. Просьба не забрасывать это дело и конкретно курс по C#.

  • @DaLusiks
    @DaLusiks 4 ปีที่แล้ว +3

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

  • @mariiasafonova5510
    @mariiasafonova5510 2 ปีที่แล้ว

    spasibo za urok, ochen interesno

  • @ИванДраго-о1щ
    @ИванДраго-о1щ 2 ปีที่แล้ว +1

    Отлично!

  • @nawakoff2581
    @nawakoff2581 4 ปีที่แล้ว +19

    Идея для следующего видео по Windows Forms: приложение, которое рисует фрактальное дерево, при чём пользователь сам задаёт изначальную длину ветки, делитель каждой следующей ветки, угол поворота и т.д.

  • @lexgame861
    @lexgame861 4 ปีที่แล้ว +5

    Спасибо большое за видео)))

  • @_chill_relax_calm4647
    @_chill_relax_calm4647 3 ปีที่แล้ว

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

  • @АлексейФидель-п2г
    @АлексейФидель-п2г ปีที่แล้ว

    Дам совет для начинающих и тем у кого есть еще не большой опыт. Видео помогает на более лёгкоммастерства

  • @Ali-zy3rw
    @Ali-zy3rw 2 ปีที่แล้ว +5

    Обалдеть, чуствую себя самым умным на свете после того как всё понял

    • @ZuraevD
      @ZuraevD ปีที่แล้ว

      хахах, понимаю

    • @vladimir_pl
      @vladimir_pl ปีที่แล้ว

      А ДЗ смог сделать ?

    • @ZuraevD
      @ZuraevD ปีที่แล้ว +1

      @@vladimir_pl я нет😂, только первое

    • @makesuprise8259
      @makesuprise8259 9 หลายเดือนก่อน

      @@ZuraevD как успехи

    • @ZuraevD
      @ZuraevD 9 หลายเดือนก่อน

      @@makesuprise8259 норм, курс то я этот второй раз пересматривал. Ща пока остановился, другие предметы по возможности закрываю. Ну вообще да, обленился я

  • @ЯрославГоловко-ф6и
    @ЯрославГоловко-ф6и 4 ปีที่แล้ว +5

    Спасибо

  • @alexgrekov7304
    @alexgrekov7304 3 ปีที่แล้ว +1

    Добрый день! Благодаря Вашим видео легче учить С#, но все же заметил один интересный момент,подскажите пожалуйста,если Вам не сложно)
    Дело в том,что когда использую структуру,то так как она не является статичной,то и метод Foo не видит её. Когда же вписываю публичные статические переменные,то метод начинает видеть их. На Вашем видео же вроде не обязательно ставить static перед переменными,когда у меня же требуется в Visual Studio. Немного не понял, почему так произошло,в любом случае с удовольствием буду продолжать смотреть Ваши видео)

  • @veronikagordynets992
    @veronikagordynets992 3 ปีที่แล้ว +1

    наконец-то я поняль! Спасибо, Серега!

  • @ЕвгенийЕмельянов-п2ы
    @ЕвгенийЕмельянов-п2ы 9 หลายเดือนก่อน

    спасибо. очень четко.

  • @MihailSofianou
    @MihailSofianou 4 ปีที่แล้ว +1

    Очень долго ждал этот урок

  • @НадеждаИванова-п1с
    @НадеждаИванова-п1с 3 ปีที่แล้ว +1

    Благодарю

  • @НикитаСолотин
    @НикитаСолотин 3 ปีที่แล้ว

    Спасииибо!

  • @АлександрГребенюк-д9ъ
    @АлександрГребенюк-д9ъ 2 ปีที่แล้ว +1

    закипел я на этом видосе, особенно под конец.

  • @k1ntoho
    @k1ntoho 4 ปีที่แล้ว +3

    Ура, новый видос!)

  • @dobrinyanicitich7514
    @dobrinyanicitich7514 4 ปีที่แล้ว +1

    Не знал, спасибо за труд!

  • @akstis4183
    @akstis4183 4 ปีที่แล้ว +3

    миллион раз спасибо

  • @alexmam2886
    @alexmam2886 3 ปีที่แล้ว +1

    Больше домашек, ушло 4 дня на решение всех, но очень понравилось. Самые сложные - это задания по элементам. Оба решения по элементам, добавлению и удалению, почему-то получились разные. Последнее в разы короче вышло.

    • @maratyakupov3546
      @maratyakupov3546 ปีที่แล้ว

      А как вам удалось изменить размер массива, не затрагивая при этом другие его элементы и их значения? Как вы смогли ввести изменения в длину массива без метода Resize? Подскажите, я в отчаянии.

  • @АндрейКвасников-и9м
    @АндрейКвасников-и9м 2 ปีที่แล้ว +1

    Чел ты гений, смотрю для ознакомления и понимаю, что тебе цены не было бы в моем унике

  • @SuperAbisal
    @SuperAbisal 4 ปีที่แล้ว +1

    Спасибо .

  • @artemky3bmu45
    @artemky3bmu45 ปีที่แล้ว

    Спасибо большое

  • @АламанСабақтары
    @АламанСабақтары 4 ปีที่แล้ว +5

    Красава

  • @Ivan-od5qc
    @Ivan-od5qc 4 ปีที่แล้ว +1

    Ты просто бомба!! 💣 👍

  • @arevminn9407
    @arevminn9407 ปีที่แล้ว

    Спасибо вам ❤😍

  • @artlinestudio6735
    @artlinestudio6735 3 ปีที่แล้ว +3

    Хороший урок. Полезный, интересный и без забегания на 100500 шагов вперёд. Спасибо Сергей!

  • @DarkstalkerFly
    @DarkstalkerFly 3 ปีที่แล้ว

    Спасибо!

  • @bur-mq1mq
    @bur-mq1mq ปีที่แล้ว

    Спасибо, понял с 1 раза

  • @threedking
    @threedking 2 ปีที่แล้ว

    Указатели плюсов это что-то новое для шарпа)

  • @АртёмГуртиков-х9ч
    @АртёмГуртиков-х9ч 4 ปีที่แล้ว +2

    Сергей, большое спасибо за уроки, но меня очень интересует вопрос: какого уровня знаний необходим си шарп, чтобы я мог писать игры на unity? Достаточно ли уже вышедших уроков, если нет то какие темы изучать самому??

    • @Anton-lu1pl
      @Anton-lu1pl 4 ปีที่แล้ว +1

      Достаточно, в юнити много своих приколов, много методов унаследованных от класса MonoBehaviour, о которых тут явно речь идти не будет) Посмотрите видео coздания игры, увидите +- необходимый уровень знаний C#

    • @strannik-klp
      @strannik-klp 4 ปีที่แล้ว +2

      Как минимум базовое понятие ООП нужно усвоить) Там всё на классах.

    • @-unity-
      @-unity- ปีที่แล้ว

      Пишу игры на Юнити уже седьмой год. И всё равно нет ощущения, что я достаточно знаю си-шарп. Чтобы понять, достаточно тебе твоих знаний или нет, есть простой способ определения: начни создавать собственную игру. Для этого надо понять философию Юнити. Что такое игровые объекты, что такое компоненты, зачем нужны всякие ресурсы/ассеты. И вот как начнёшь добавлять скрипты к игровым объектам, сразу станет понятно, достаточно твоих знаний или нет.

  • @liko8019
    @liko8019 3 ปีที่แล้ว +1

    лучший в своём деле

  • @denr721
    @denr721 2 ปีที่แล้ว +2

    Раза 3 пересмотрел чтобы полностью понять материал, спасибо огромное вам. Я правильно понимаю, что когда мы используем ref, то мы присваеваем переменной ссылку точно такую же, что и у другой переменной, но с тем отличием, что, когда мы будем взаимодействовать с этой ссылкой (менять её и т.д) то она будет меняться и в другой переменной, у которой мы её взяли, правильно?
    🐱

    • @denr721
      @denr721 2 ปีที่แล้ว

      Так же можно сказать, что мы копируем ссылку или само значение, но с оговоркой: типо мы сможем изменять и начальное состояние переменной.
      Можно даже рассмотреть это на примере: У нас есть МакДак и в нём делают бургеры и мы решили дома сделать себе бургер точно такой же как и в МакДаке - получается здесь мы копируем только лишь бургер.
      А вот если будем использовать ref, то когда мы решим сделать бургер точно такой же как и маке, то мы то сделаем его. Но если мы засунем туда какой - нибудь другой ингридиент, ну к слову БЕКОН, то этот БЕКОН появиться и в бургерах у МакДака, Верно?

    • @-unity-
      @-unity- ปีที่แล้ว

      Что-то так много всего написано...
      "Я правильно понимаю, что когда мы используем ref, то мы присваеваем переменной ссылку точно такую же, что и у другой переменной, но с тем отличием..." - без отличия. Просто через ref передаётся ссылка. И когда мы в методе что-то делаем с этой переменной, то мы уже работает с теми значениями, куда указывает ссылка, а не с их копиями.

  • @CraneHeree
    @CraneHeree 4 ปีที่แล้ว

    блин, я сейчас только на 11 уроке, решил посмотреть последний урок.... Да, надеюсб в скором времени я во всем этом буду хорошо разбираться, кстати ты клево объясняешь

  • @АлександрОбыкновенный-е9д
    @АлександрОбыкновенный-е9д 4 หลายเดือนก่อน

    Можно это интерпретировать вот так:
    ref создает еще одно поле в оперативной памяти рядом со стеком, где лежат ссылки на значимые(value type) объекты. Если в голове всё представить именно так, то как и в случае с интерпретацией многомерных массивов как полок с тетрадями, всё очень легко усваивается. Надеюсь кому-то помог)

  • @АтаманенкоНазарИН-03
    @АтаманенкоНазарИН-03 ปีที่แล้ว +1

    Кто хочет задание какое то выполнить, попробуйте такое.
    Сделайте змейку. Ставится точка, и от нее уже последующая, после последующей еще одна и.тд....
    Для поворотов(Их 4) используйте методы, для методов нужно будет указывать ref, пример работы гляньте у меня) Игрался долго с такой штукой(код так же скину).
    (Все должно быть в .Net Core) не фреймворк.

  • @ElMirage89
    @ElMirage89 3 ปีที่แล้ว +1

    Сергей, добрый день.
    Вопрос: в примере, который начинается с 26:00 мы же могли вместо ref int b = ref Foo(arr); написать ref int b = Foo(arr); ? Ведь Foo(arr) итак возвращает нам ссылку на элемент Numbers[0].
    Верно?

    • @hdfroggit3051
      @hdfroggit3051 3 ปีที่แล้ว

      Тот же вопрос, но компилятор выдает ошибку "Невозможно инициализировать значением переменную по ссылке"

  • @Proffiservices
    @Proffiservices 3 ปีที่แล้ว

    Сергей! Спасибо за ваши уроки с методами по ним всё ясно. Только если передачу по ref понятно как и где использовать, а вот передачу по значению - непонятно! Допустим если функция void и идёт какое-то вычисление , то оно видно только в видимой области данного метода! Не понятен смысл этого и непонятно для чего это нужно! Не могли бы вы посветить один урок именно этому? Как работает вы разжевали и это все ясно, не понятно зачем , как использовать и как применять на практике(. Вот допустим есть переменная и мы с ней выполнили какие-то действия в методе(без ref), то результат там и остался - в данной области видимости, а переменная в main останется не изменённой. Зачем это нужно??? Вот , что не понятно. Возможно нужно какое-то практическое или домашнее задание с примером такой работы. Спасибо!!!

    • @-unity-
      @-unity- ปีที่แล้ว

      "Вот допустим есть переменная и мы с ней выполнили какие-то действия в методе(без ref), то результат там и остался - в данной области видимости, а переменная в main останется не изменённой. Зачем это нужно??? " - это вообще не нужно. Любые новые значения внутри метода должны куда-то передаваться: или наружу (через ref или return), или на печать Console.Write(), или куда-нибудь в файл на диск или в базу данных. Если же ничего никуда не передаётся, то и незачем такое вычислять.

  • @X1th
    @X1th ปีที่แล้ว

    Хочу ответить словами киногероя по youtube запросу: Дядя Джуниор - Клан сопрано
    xD придется пересматривать несколько раз)

  • @aliaksandrastapchyk8352
    @aliaksandrastapchyk8352 4 ปีที่แล้ว +13

    Нничего себе, что у тебя за статистика по лайки/дизлайки(1100/1) ?)

  • @ИванДраго-о1щ
    @ИванДраго-о1щ 2 ปีที่แล้ว +1

    Пришел к мнению что первый язык программирования должны быть плюсы . Хороший старт для освоения всех остальных .

    • @-unity-
      @-unity- ปีที่แล้ว

      Нууууу... я бы не стал начинать с плюсов. Всё-таки там очень много моментов, которые не являются интуитивно понятными. И к тому же много неоднозначностей. Шарп такие вещи сразу отрубает административными методами: "нельзя так делать, иначе тут можно понять двояко".

  • @Estarossa_Miloserdia
    @Estarossa_Miloserdia 2 ปีที่แล้ว +1

    Ура дз))

  • @DimdimichCh
    @DimdimichCh 3 ปีที่แล้ว +2

    Читаю комменты и виду что люди понимают и пишут что все понятно. А я понял только половину с 3 раза. Но я не сдамся, буду смотреть пока не пойму. Все остальное было проще понять.

  • @RebellonRM
    @RebellonRM 3 ปีที่แล้ว +2

    Но даже если переменная а в методе Foo совершенно другая переменная, то при возвращении в main её значение тоже меняется с -5 на 2. Сидел втуплял, но так и не втупил. Ведь мне говорят, что они разные, но значения в них меняются одинаково.

    • @-unity-
      @-unity- ปีที่แล้ว +1

      "то при возвращении в main её значение тоже меняется с -5 на 2. " - нет, не так. При выходе из метода значения всех переменных, которые были внутри этого метода, уничтожаются. Следовательно, больше нет никакой переменной "а" внутри Foo. И как только ты выходишь из любого метода, то попадаешь в область видимости той функции, в которую ты вышел. В этом примере: выходя из Foo, попадаешь в Main. А тут у нас своя переменная "а", которая имеет своё значение, равное 2.
      Итак, нужно помнить, что при выходе из метода уничтожаются все значения всех переменных этого метода.

  • @mikhailkh8560
    @mikhailkh8560 ปีที่แล้ว +1

    По ссылочным данным, по аналогии с ярлычками - у нас есть ярлык для области памяти, если мы передаем его без рефа - то внутрь функции попадает не сам ярлык, а его копия. По этой копии мы можем получить данные из области памяти, но если мы попытаемся поменять путь в ярлыке, то на оригинал это никак не повлияет

    • @-unity-
      @-unity- ปีที่แล้ว

      Молодец, очень грамотно изложил суть!