Cамый лучший способ сказать "спасибо" - поставить лайк и и поделиться уроком с друзьями. Это очень мотивирует создавать полезные уроки =) ✅Доступ к исходному коду и спонсорство www.patreon.com/SimpleCode ✅ donatepay.ru/don/SimpleCode ✅BTC кошелек: 12oYfJnvt76wjJbpvfhM41m6KPz6uz4LD4
Но,здесь есть плюсы,Сергей раскрывает все детали каждой темы просто и понятно.Но очень долго ждать новых видео-уроков,пока до тех же делегатов дойдем...эх...Ну и практических заданий бы.
Если бы можно было ставить лайк не видео отдельно а всему каналу сразу, я бы автору его поставил... перечитал кучу книг и перепробовал кучу софта с самообучением программированию, но здесь подача просто божественная
Отличные уроки, спасибо! Я в C# хоть и не новичок, но тоже очень полезно пересмотреть. Очень часто наталкиваюсь на что-то новое о существовании которого и не догадывался, а делал раньше по старинке.
@@ptichkasinichkamia Я его учил года 2 назад тоже по урокам в ютубе, но от Гоши Дударя(2 месяца занимался). Потом забросил, и вот недавно (месяц назад) открыл для себя SimpleCode. Объясняет он на уровень выше чем Дударь и в целом то что я учил 2 года назад оно помогло освежить большинство тем которые были в начале этого курса. Но дойдя до темы null и ref тут я уже как бы столкнулся с чем то новым) Интересно и сложно. Щас сижу пыхчу над домашкой ХD
На каждое видео по csharp ставлю лайк. Спасибо большое за такие понятные уроки, читаю параллельно книгу по unity и еще одну книгу просто про csharp, если бы не ваши уроки, то врятли что-то поняла еще на стадии переменных! Там хоть и стараются авторы писать очень простым языком, но все равно у вас нагляднее и понятнее, возможно еще и потому что вы подаете материал дозированно.
Спасибо, Сергей! Уф....Ну что могу сказать... Два дня с перерывами ломал голову. После завершения, понял что хоть я и указываю слово 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());
Раньше смотрел в основном англоязычный ютуб, но тут попались вы Сергей и очень понравилось, как вы объясняете. Теперь буду смотреть и вас после этого урока)
нереально круто обьясняет, в начале урока думал ну пиздец приплыли... и ближе к 22-й минуте я начинал понемногу понимать. это некий симпл в мире кодирования, как симпл в кс го
Единственное, что хотелось бы уточнить - иногда даже с ref происходит копирование Value Type'ов и все тут. Например, если структуру инициализировать не с помощью конструктора, а с помощью инициализатора - там можно словить movdqu/movdqa/vmovdqu. Там много условий должно совпасть чтобы это произошло и на поведение программы это не влияет, но может повлиять на производительность.
16:35 - Недавно столкнулся с такой проблемой по незнанию. У меня это прям головную боль вызвало, почему передавая объект класса в метод тот на выходе ничего не менял. Оказалось ровно то, что Вы объяснили в видео, то есть нужно указывать ref в подобных ситуациях даже для ссылочных данных
@@makesuprise8259 норм, курс то я этот второй раз пересматривал. Ща пока остановился, другие предметы по возможности закрываю. Ну вообще да, обленился я
Нашел этот канал случайно, всё довольно доходчиво, но некоторые моменты я иногда не понимаю, и сижу с вопросом в голове ""а зачем так делать если это совсем не нужно"" к чему, я ПЫТАЮСЬ понять язык, но даётся с трудом, особенно какие то моменты, например с дз, просматривая тему, вроде бы как в голове отложилось, и порой понимаешь , что куда откуда и для чего, находишь некую связь, НО когда пытаюсь написать что то сам, например попробовать сделать дз, я вступаю в некий ступор, я не знаю с чего начать, что делать, что за чем следует, как проявить ту или иную задачу в голове. (надеюсь я дойду до уровня когда хотяб начну понимать). Но когда смотрю как ты выполнил дз, я сижу и думаю, так надо было делать так,и как бы понимаю весь код,я могу понять что куда и откуда, но сам писав код, затрудняюсь это делать, дай пару советов, как перебороть в себе этот момент со ступором. По урокам притензий не может, всё довольно доходчиво и хороший голос на слух, но я тупой ))) дай совет!!!
Значит ты не понимаешь, как строится структура самой программы( какая область видимости за что отвечает, где писать методы, а где основной код и тд). Пересмотри первые видосы или просто пиши простые программки по типу додать 2 числа, и постепенно добавляй в них что-то еще(например вывод сообщения). По сути, тебе просто не хватает практики. Вбиваешь в интернете задачки по с# и делаешь одну за другой)
Идея для следующего видео по Windows Forms: приложение, которое рисует фрактальное дерево, при чём пользователь сам задаёт изначальную длину ветки, делитель каждой следующей ветки, угол поворота и т.д.
Спасибо за видео и лайк! Сергей, хотелось бы больше практических заданий или ссылку где их брать. Так же было бы интересно , чтоб Вы объяснили , что ещё нужно параллельно учить с языком С# в дополнении. Или пока только эти знания, а потом ещё, что-то?
Кто хочет задание какое то выполнить, попробуйте такое. Сделайте змейку. Ставится точка, и от нее уже последующая, после последующей еще одна и.тд.... Для поворотов(Их 4) используйте методы, для методов нужно будет указывать ref, пример работы гляньте у меня) Игрался долго с такой штукой(код так же скину). (Все должно быть в .Net Core) не фреймворк.
Больше домашек, ушло 4 дня на решение всех, но очень понравилось. Самые сложные - это задания по элементам. Оба решения по элементам, добавлению и удалению, почему-то получились разные. Последнее в разы короче вышло.
А как вам удалось изменить размер массива, не затрагивая при этом другие его элементы и их значения? Как вы смогли ввести изменения в длину массива без метода Resize? Подскажите, я в отчаянии.
Можно это интерпретировать вот так: ref создает еще одно поле в оперативной памяти рядом со стеком, где лежат ссылки на значимые(value type) объекты. Если в голове всё представить именно так, то как и в случае с интерпретацией многомерных массивов как полок с тетрадями, всё очень легко усваивается. Надеюсь кому-то помог)
Добрый день! Благодаря Вашим видео легче учить С#, но все же заметил один интересный момент,подскажите пожалуйста,если Вам не сложно) Дело в том,что когда использую структуру,то так как она не является статичной,то и метод Foo не видит её. Когда же вписываю публичные статические переменные,то метод начинает видеть их. На Вашем видео же вроде не обязательно ставить static перед переменными,когда у меня же требуется в Visual Studio. Немного не понял, почему так произошло,в любом случае с удовольствием буду продолжать смотреть Ваши видео)
Раза 3 пересмотрел чтобы полностью понять материал, спасибо огромное вам. Я правильно понимаю, что когда мы используем ref, то мы присваеваем переменной ссылку точно такую же, что и у другой переменной, но с тем отличием, что, когда мы будем взаимодействовать с этой ссылкой (менять её и т.д) то она будет меняться и в другой переменной, у которой мы её взяли, правильно? 🐱
Так же можно сказать, что мы копируем ссылку или само значение, но с оговоркой: типо мы сможем изменять и начальное состояние переменной. Можно даже рассмотреть это на примере: У нас есть МакДак и в нём делают бургеры и мы решили дома сделать себе бургер точно такой же как и в МакДаке - получается здесь мы копируем только лишь бургер. А вот если будем использовать ref, то когда мы решим сделать бургер точно такой же как и маке, то мы то сделаем его. Но если мы засунем туда какой - нибудь другой ингридиент, ну к слову БЕКОН, то этот БЕКОН появиться и в бургерах у МакДака, Верно?
Что-то так много всего написано... "Я правильно понимаю, что когда мы используем ref, то мы присваеваем переменной ссылку точно такую же, что и у другой переменной, но с тем отличием..." - без отличия. Просто через ref передаётся ссылка. И когда мы в методе что-то делаем с этой переменной, то мы уже работает с теми значениями, куда указывает ссылка, а не с их копиями.
Читаю комменты и виду что люди понимают и пишут что все понятно. А я понял только половину с 3 раза. Но я не сдамся, буду смотреть пока не пойму. Все остальное было проще понять.
блин, я сейчас только на 11 уроке, решил посмотреть последний урок.... Да, надеюсб в скором времени я во всем этом буду хорошо разбираться, кстати ты клево объясняешь
Сергей, добрый день. Вопрос: в примере, который начинается с 26:00 мы же могли вместо ref int b = ref Foo(arr); написать ref int b = Foo(arr); ? Ведь Foo(arr) итак возвращает нам ссылку на элемент Numbers[0]. Верно?
Но даже если переменная а в методе Foo совершенно другая переменная, то при возвращении в main её значение тоже меняется с -5 на 2. Сидел втуплял, но так и не втупил. Ведь мне говорят, что они разные, но значения в них меняются одинаково.
"то при возвращении в main её значение тоже меняется с -5 на 2. " - нет, не так. При выходе из метода значения всех переменных, которые были внутри этого метода, уничтожаются. Следовательно, больше нет никакой переменной "а" внутри Foo. И как только ты выходишь из любого метода, то попадаешь в область видимости той функции, в которую ты вышел. В этом примере: выходя из Foo, попадаешь в Main. А тут у нас своя переменная "а", которая имеет своё значение, равное 2. Итак, нужно помнить, что при выходе из метода уничтожаются все значения всех переменных этого метода.
Сергей, большое спасибо за уроки, но меня очень интересует вопрос: какого уровня знаний необходим си шарп, чтобы я мог писать игры на unity? Достаточно ли уже вышедших уроков, если нет то какие темы изучать самому??
Достаточно, в юнити много своих приколов, много методов унаследованных от класса MonoBehaviour, о которых тут явно речь идти не будет) Посмотрите видео coздания игры, увидите +- необходимый уровень знаний C#
Пишу игры на Юнити уже седьмой год. И всё равно нет ощущения, что я достаточно знаю си-шарп. Чтобы понять, достаточно тебе твоих знаний или нет, есть простой способ определения: начни создавать собственную игру. Для этого надо понять философию Юнити. Что такое игровые объекты, что такое компоненты, зачем нужны всякие ресурсы/ассеты. И вот как начнёшь добавлять скрипты к игровым объектам, сразу станет понятно, достаточно твоих знаний или нет.
Нууууу... я бы не стал начинать с плюсов. Всё-таки там очень много моментов, которые не являются интуитивно понятными. И к тому же много неоднозначностей. Шарп такие вещи сразу отрубает административными методами: "нельзя так делать, иначе тут можно понять двояко".
Вижу, что многие люди отвалились, ведь просмотры снижаются, но что уж тут поделать, это неизбежно. Что касается меня, то я вот прям сейчас начал смотреть твои серии и надеюсь, что не заброшу их. В 11 классе нам на ИКТ дали наконец-то попрактиковаться с паскалем и мне понравилось там писать мини игрушку, в которой нужно бить босса каждый ход. Понравилось мне так, что затем на телефон скачал компилятор паскаля. На тот момент в игре уже сделал завязанные на рандоме критические удары и регенерации босса, однако в школе мне друг сказал, что давай ка ты не на паскале это будешь делать, а на C#. Я такой подумал-подумал и, мостоятельно изучив малеха синтаксис, перевел эту игруху с паскаля на с++. Ну и забил конечно. А недавно, на стриме одного ютубера, один парень спрашивал, не хочет ли кто-нибудь поучаствовать в разработке его игры, ведь он делает модельки для Unity. Вот тут конечно и спросил он меня, а умею ли я на c# шаманить. Подумал-подумал я такой и решил скачать visual studio, и найти какой-нибудь гайдик. В это время уже на ютубе везде была реклама C, C++ и С#, ведь у нас тут век таргетированной рекламы. И тут бац, в рекомендации попадает твое видео по C#. Настало время переводить мою игруху сюда, я так понимаю)
@@АнтонМирошниченко-в8х В какой-то момент я посмотрел все серии, которые были доступны на тот момент и стал ждать новых видео, но отвлёкся на что-то другое. Время шло, а я и не заходил ни разу в visual studio со времен уроков. Недавно мой одноклассник сказал, что у них в вузе началось программирование (как и у меня, но у нас они обучают только алгоритмам работы с фортраном (древний язык, лет 50 ему)). Он вдохновился и решил сделать что-то своё, а это вдохновило и меня, так что я вспомнил про simplecode и заглянул на канал, обнаружив тут кучу новых роликов. Посмотрел и записал ещё пару уроков и снова медленно забыл это дело из-за переживаний в универе, ведь у меня ещё задолженность с первой сессии осталась. Сейчас почти ничего полезного не делаю и пытаюсь отвлечь свой мозг ютубом и сериалами (агент картер и agents of s.h.i.e.l.d.), чтобы не думать о том, что я ни черта не понимаю мат. анализ и теоретическую механику. То ли ещё будет.
Cамый лучший способ сказать "спасибо" - поставить лайк и и поделиться уроком с друзьями. Это очень мотивирует создавать полезные уроки =)
✅Доступ к исходному коду и спонсорство www.patreon.com/SimpleCode
✅ donatepay.ru/don/SimpleCode
✅BTC кошелек: 12oYfJnvt76wjJbpvfhM41m6KPz6uz4LD4
что-что, а объяснять сложное простым языком у вас получается. таких бы людей везде: и в школах, и в универах, и на ютубе)
Тут
Тут
Ураа! Новый урок! Спс от души просто!!! Боялся что ты забросишь уроки.
Три раза(от начала до конца) пересмотрел этот урок, только потом начал понемногу понимать.
Аналогично
буквально также посмотрел 3 раза:D
Хз я сразу понял
Благодарность огромная,учусь по твоим урокам,и другим советую твой канал, который лучший на ютубе по языку с#👍
Кхм-кхм...CodeBlog 🔝
Но,здесь есть плюсы,Сергей раскрывает все детали каждой темы просто и понятно.Но очень долго ждать новых видео-уроков,пока до тех же делегатов дойдем...эх...Ну и практических заданий бы.
@@minoddein7205 у codebloge тоже все понятно но code blog мастер обьяснять простве вещи на протяжение часа
Спасибо за урок!) Ждем List)
Большое спасибо за урок! Жду новых!
Огромнейшее спасибо! Такую сложную тему так легко раскидать!
Это талант! Огромное спасибо! Мира вашему дому.
Если бы можно было ставить лайк не видео отдельно а всему каналу сразу, я бы автору его поставил... перечитал кучу книг и перепробовал кучу софта с самообучением программированию, но здесь подача просто божественная
Ты не представляешь, как ты мне помог разобраться во многих темах, большое тебе человеческое спасибо!
Спппасибо дяде Сереже за достойный контент
Отличные уроки, спасибо! Я в C# хоть и не новичок, но тоже очень полезно пересмотреть. Очень часто наталкиваюсь на что-то новое о существовании которого и не догадывался, а делал раньше по старинке.
Мы передали ссылку по ссылке! Офигенно! Вы Сергей наикрутейший преподаватель!)
Один из лучших курсов! Спасибо, что делитесь знаниями!
Сложная тема :) Спасибо что много примеров! Лучшие уроки!
я тоже учу сейчас на этом месте)
Давно начал учить C#?
@@ptichkasinichkamia Я его учил года 2 назад тоже по урокам в ютубе, но от Гоши Дударя(2 месяца занимался). Потом забросил, и вот недавно (месяц назад) открыл для себя SimpleCode. Объясняет он на уровень выше чем Дударь и в целом то что я учил 2 года назад оно помогло освежить большинство тем которые были в начале этого курса. Но дойдя до темы null и ref тут я уже как бы столкнулся с чем то новым) Интересно и сложно. Щас сижу пыхчу над домашкой ХD
@@КириллГетьман-у2я я тоже сейчас её делаю
@@ptichkasinichkamia Осталось сделать удаление элементов массива с начала, конца и по индексу.
На каждое видео по csharp ставлю лайк. Спасибо большое за такие понятные уроки, читаю параллельно книгу по unity и еще одну книгу просто про csharp, если бы не ваши уроки, то врятли что-то поняла еще на стадии переменных! Там хоть и стараются авторы писать очень простым языком, но все равно у вас нагляднее и понятнее, возможно еще и потому что вы подаете материал дозированно.
подскажи по юнити книгу
Спасибо, Сергей!
Уф....Ну что могу сказать... Два дня с перерывами ломал голову. После завершения, понял что хоть я и указываю слово 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());
Раньше смотрел в основном англоязычный ютуб, но тут попались вы Сергей и очень понравилось, как вы объясняете. Теперь буду смотреть и вас после этого урока)
Я человек простой. Вижу видео Сергея, сразу поставлю лайк)
Спасибо тебе за эти уроки! Очень внятно и доступно
Сергей, спасибо вам за урок! Сделайте пожалуйста следующий выпуск про использование выходного параметра out.
спасибо! все уроки - очень понятным языком
Ссылка на ссылку.... аж ностальгия по С++ пробила) Спасибо!!!
Как много слов , как много информации . Но под конец урока всё таки смог осознать принцип работы этого ref.Спасибо за урок !)
Сергей, спасибо за урок! Как всегда всё понятно и вообще супер!)
Спасибо большое за уроки
смотрел этот урок 3 года назад и все было понятно, когда сам столкнулся с этой проблемой пересмотрел и понял все, на все 100%
Очень понятно и классно разъяснил. Спасибо большое.
Спасибо за урок!
Я только начал своё изучение С#
Спасибо за понятные и чёткие уроки. Надеюсь ты не забросиш это дело и доведёш всё до конца👍💪💪
как результат за 2 года?
@@ptichkasinichkamia зарабатывает 300к в наносекунду
нереально круто обьясняет, в начале урока думал ну пиздец приплыли... и ближе к 22-й минуте я начинал понемногу понимать. это некий симпл в мире кодирования, как симпл в кс го
Единственное, что хотелось бы уточнить - иногда даже с ref происходит копирование Value Type'ов и все тут. Например, если структуру инициализировать не с помощью конструктора, а с помощью инициализатора - там можно словить movdqu/movdqa/vmovdqu. Там много условий должно совпасть чтобы это произошло и на поведение программы это не влияет, но может повлиять на производительность.
Самый лучший обьяснятор на ютубе
Я познал истину ! Спасибо, Сэнсэй !
Спасибо за ваши старания!
Как всегда классный урок)
16:35 - Недавно столкнулся с такой проблемой по незнанию. У меня это прям головную боль вызвало, почему передавая объект класса в метод тот на выходе ничего не менял. Оказалось ровно то, что Вы объяснили в видео, то есть нужно указывать ref в подобных ситуациях даже для ссылочных данных
Спасибо за отличные уроки и домашнее задание =)
Поддерживающий комментарий для дальнейшего развития канала
На нашем направлении в универе старшекурсники и преподаватели рекомендуют твои уроки!
Обалдеть, чуствую себя самым умным на свете после того как всё понял
хахах, понимаю
А ДЗ смог сделать ?
@@vladimir_pl я нет😂, только первое
@@ZuraevD как успехи
@@makesuprise8259 норм, курс то я этот второй раз пересматривал. Ща пока остановился, другие предметы по возможности закрываю. Ну вообще да, обленился я
Как же круто ты объясняешь.
спасибо Сергей !!!
Спасибо за урок! Всё просто супер!)) Получаю кайф от выполненного дз чисто мной)
Спасибо тебе искренне!
Сергей, привет! Сразу лайк, но посмотрю позже)))
Отличное видео, отличный парень!
йоу йоу йоу новый урок))) когда закончились твои уроки начал бегать по всему ютубу как дворняга(
Мы встроили тебе ссылку в ссылку, чтобы ты мог передавать одну ссылку, пока находишься в другой ссылке)
Благодарю!
большое спасибо за столь подробное объяснение
Дам совет для начинающих и тем у кого есть еще не большой опыт. Видео помогает на более лёгкоммастерства
Спасибо. Полезно и позновательно.
Спасибо большое за видео)))
Ура, новый видос!)
Очень долго ждал этот урок
Комментарии в поддержку канала. Просьба не забрасывать это дело и конкретно курс по C#.
Спасибо! Шикарное объяснение
Спасибо за урок
наконец-то я поняль! Спасибо, Серега!
офигеть, первая домашка где я не могу решить задания😮, смог только 1 задание и то без Resize(с ним у меня выходила ошибка CS0176 )
Нашел этот канал случайно, всё довольно доходчиво, но некоторые моменты я иногда не понимаю, и сижу с вопросом в голове ""а зачем так делать если это совсем не нужно""
к чему, я ПЫТАЮСЬ понять язык, но даётся с трудом, особенно какие то моменты, например с дз, просматривая тему, вроде бы как в голове отложилось, и порой понимаешь , что куда откуда и для чего, находишь некую связь, НО когда пытаюсь написать что то сам, например попробовать сделать дз, я вступаю в некий ступор, я не знаю с чего начать, что делать, что за чем следует, как проявить ту или иную задачу в голове. (надеюсь я дойду до уровня когда хотяб начну понимать). Но когда смотрю как ты выполнил дз, я сижу и думаю, так надо было делать так,и как бы понимаю весь код,я могу понять что куда и откуда, но сам писав код, затрудняюсь это делать, дай пару советов, как перебороть в себе этот момент со ступором. По урокам притензий не может, всё довольно доходчиво и хороший голос на слух, но я тупой ))) дай совет!!!
Значит ты не понимаешь, как строится структура самой программы( какая область видимости за что отвечает, где писать методы, а где основной код и тд). Пересмотри первые видосы или просто пиши простые программки по типу додать 2 числа, и постепенно добавляй в них что-то еще(например вывод сообщения). По сути, тебе просто не хватает практики. Вбиваешь в интернете задачки по с# и делаешь одну за другой)
як твої успіхи через рік?
угар хотите ? прошло три года а я до сих пор учу )))))))
Идея для следующего видео по Windows Forms: приложение, которое рисует фрактальное дерево, при чём пользователь сам задаёт изначальную длину ветки, делитель каждой следующей ветки, угол поворота и т.д.
Спасибо за видео и лайк! Сергей, хотелось бы больше практических заданий или ссылку где их брать. Так же было бы интересно , чтоб Вы объяснили , что ещё нужно параллельно учить с языком С# в дополнении. Или пока только эти знания, а потом ещё, что-то?
Спасибо большое за урок) Скоро ли будет ООП?
spasibo za urok, ochen interesno
закипел я на этом видосе, особенно под конец.
Отлично!
Кто хочет задание какое то выполнить, попробуйте такое.
Сделайте змейку. Ставится точка, и от нее уже последующая, после последующей еще одна и.тд....
Для поворотов(Их 4) используйте методы, для методов нужно будет указывать ref, пример работы гляньте у меня) Игрался долго с такой штукой(код так же скину).
(Все должно быть в .Net Core) не фреймворк.
Ты просто бомба!! 💣 👍
Не знал, спасибо за труд!
Спасибо
Больше домашек, ушло 4 дня на решение всех, но очень понравилось. Самые сложные - это задания по элементам. Оба решения по элементам, добавлению и удалению, почему-то получились разные. Последнее в разы короче вышло.
А как вам удалось изменить размер массива, не затрагивая при этом другие его элементы и их значения? Как вы смогли ввести изменения в длину массива без метода Resize? Подскажите, я в отчаянии.
спасибо. очень четко.
лучший в своём деле
миллион раз спасибо
Можно это интерпретировать вот так:
ref создает еще одно поле в оперативной памяти рядом со стеком, где лежат ссылки на значимые(value type) объекты. Если в голове всё представить именно так, то как и в случае с интерпретацией многомерных массивов как полок с тетрадями, всё очень легко усваивается. Надеюсь кому-то помог)
Хороший урок. Полезный, интересный и без забегания на 100500 шагов вперёд. Спасибо Сергей!
Чел ты гений, смотрю для ознакомления и понимаю, что тебе цены не было бы в моем унике
Спасибо вам ❤😍
Благодарю
Красава
Указатели плюсов это что-то новое для шарпа)
Добрый день! Благодаря Вашим видео легче учить С#, но все же заметил один интересный момент,подскажите пожалуйста,если Вам не сложно)
Дело в том,что когда использую структуру,то так как она не является статичной,то и метод Foo не видит её. Когда же вписываю публичные статические переменные,то метод начинает видеть их. На Вашем видео же вроде не обязательно ставить static перед переменными,когда у меня же требуется в Visual Studio. Немного не понял, почему так произошло,в любом случае с удовольствием буду продолжать смотреть Ваши видео)
Спасииибо!
Спасибо .
Спасибо большое
Раза 3 пересмотрел чтобы полностью понять материал, спасибо огромное вам. Я правильно понимаю, что когда мы используем ref, то мы присваеваем переменной ссылку точно такую же, что и у другой переменной, но с тем отличием, что, когда мы будем взаимодействовать с этой ссылкой (менять её и т.д) то она будет меняться и в другой переменной, у которой мы её взяли, правильно?
🐱
Так же можно сказать, что мы копируем ссылку или само значение, но с оговоркой: типо мы сможем изменять и начальное состояние переменной.
Можно даже рассмотреть это на примере: У нас есть МакДак и в нём делают бургеры и мы решили дома сделать себе бургер точно такой же как и в МакДаке - получается здесь мы копируем только лишь бургер.
А вот если будем использовать ref, то когда мы решим сделать бургер точно такой же как и маке, то мы то сделаем его. Но если мы засунем туда какой - нибудь другой ингридиент, ну к слову БЕКОН, то этот БЕКОН появиться и в бургерах у МакДака, Верно?
Что-то так много всего написано...
"Я правильно понимаю, что когда мы используем ref, то мы присваеваем переменной ссылку точно такую же, что и у другой переменной, но с тем отличием..." - без отличия. Просто через ref передаётся ссылка. И когда мы в методе что-то делаем с этой переменной, то мы уже работает с теми значениями, куда указывает ссылка, а не с их копиями.
Спасибо, понял с 1 раза
Читаю комменты и виду что люди понимают и пишут что все понятно. А я понял только половину с 3 раза. Но я не сдамся, буду смотреть пока не пойму. Все остальное было проще понять.
Спасибо !!!
блин, я сейчас только на 11 уроке, решил посмотреть последний урок.... Да, надеюсб в скором времени я во всем этом буду хорошо разбираться, кстати ты клево объясняешь
Сергей, добрый день.
Вопрос: в примере, который начинается с 26:00 мы же могли вместо ref int b = ref Foo(arr); написать ref int b = Foo(arr); ? Ведь Foo(arr) итак возвращает нам ссылку на элемент Numbers[0].
Верно?
Тот же вопрос, но компилятор выдает ошибку "Невозможно инициализировать значением переменную по ссылке"
Но даже если переменная а в методе Foo совершенно другая переменная, то при возвращении в main её значение тоже меняется с -5 на 2. Сидел втуплял, но так и не втупил. Ведь мне говорят, что они разные, но значения в них меняются одинаково.
"то при возвращении в main её значение тоже меняется с -5 на 2. " - нет, не так. При выходе из метода значения всех переменных, которые были внутри этого метода, уничтожаются. Следовательно, больше нет никакой переменной "а" внутри Foo. И как только ты выходишь из любого метода, то попадаешь в область видимости той функции, в которую ты вышел. В этом примере: выходя из Foo, попадаешь в Main. А тут у нас своя переменная "а", которая имеет своё значение, равное 2.
Итак, нужно помнить, что при выходе из метода уничтожаются все значения всех переменных этого метода.
Сергей, большое спасибо за уроки, но меня очень интересует вопрос: какого уровня знаний необходим си шарп, чтобы я мог писать игры на unity? Достаточно ли уже вышедших уроков, если нет то какие темы изучать самому??
Достаточно, в юнити много своих приколов, много методов унаследованных от класса MonoBehaviour, о которых тут явно речь идти не будет) Посмотрите видео coздания игры, увидите +- необходимый уровень знаний C#
Как минимум базовое понятие ООП нужно усвоить) Там всё на классах.
Пишу игры на Юнити уже седьмой год. И всё равно нет ощущения, что я достаточно знаю си-шарп. Чтобы понять, достаточно тебе твоих знаний или нет, есть простой способ определения: начни создавать собственную игру. Для этого надо понять философию Юнити. Что такое игровые объекты, что такое компоненты, зачем нужны всякие ресурсы/ассеты. И вот как начнёшь добавлять скрипты к игровым объектам, сразу станет понятно, достаточно твоих знаний или нет.
Пришел к мнению что первый язык программирования должны быть плюсы . Хороший старт для освоения всех остальных .
Нууууу... я бы не стал начинать с плюсов. Всё-таки там очень много моментов, которые не являются интуитивно понятными. И к тому же много неоднозначностей. Шарп такие вещи сразу отрубает административными методами: "нельзя так делать, иначе тут можно понять двояко".
Ура дз))
Хочу ответить словами киногероя по youtube запросу: Дядя Джуниор - Клан сопрано
xD придется пересматривать несколько раз)
Нничего себе, что у тебя за статистика по лайки/дизлайки(1100/1) ?)
Вижу, что многие люди отвалились, ведь просмотры снижаются, но что уж тут поделать, это неизбежно. Что касается меня, то я вот прям сейчас начал смотреть твои серии и надеюсь, что не заброшу их. В 11 классе нам на ИКТ дали наконец-то попрактиковаться с паскалем и мне понравилось там писать мини игрушку, в которой нужно бить босса каждый ход. Понравилось мне так, что затем на телефон скачал компилятор паскаля. На тот момент в игре уже сделал завязанные на рандоме критические удары и регенерации босса, однако в школе мне друг сказал, что давай ка ты не на паскале это будешь делать, а на C#. Я такой подумал-подумал и, мостоятельно изучив малеха синтаксис, перевел эту игруху с паскаля на с++. Ну и забил конечно. А недавно, на стриме одного ютубера, один парень спрашивал, не хочет ли кто-нибудь поучаствовать в разработке его игры, ведь он делает модельки для Unity. Вот тут конечно и спросил он меня, а умею ли я на c# шаманить. Подумал-подумал я такой и решил скачать visual studio, и найти какой-нибудь гайдик. В это время уже на ютубе везде была реклама C, C++ и С#, ведь у нас тут век таргетированной рекламы. И тут бац, в рекомендации попадает твое видео по C#. Настало время переводить мою игруху сюда, я так понимаю)
Успехов тебе
@@minoddein7205 Console.WriteLine("Спасибон-н!");
Здравствуйте. Прошло 9 месяцев. Как успехи?)
@@АнтонМирошниченко-в8х В какой-то момент я посмотрел все серии, которые были доступны на тот момент и стал ждать новых видео, но отвлёкся на что-то другое. Время шло, а я и не заходил ни разу в visual studio со времен уроков. Недавно мой одноклассник сказал, что у них в вузе началось программирование (как и у меня, но у нас они обучают только алгоритмам работы с фортраном (древний язык, лет 50 ему)). Он вдохновился и решил сделать что-то своё, а это вдохновило и меня, так что я вспомнил про simplecode и заглянул на канал, обнаружив тут кучу новых роликов. Посмотрел и записал ещё пару уроков и снова медленно забыл это дело из-за переживаний в универе, ведь у меня ещё задолженность с первой сессии осталась. Сейчас почти ничего полезного не делаю и пытаюсь отвлечь свой мозг ютубом и сериалами (агент картер и agents of s.h.i.e.l.d.), чтобы не думать о том, что я ни черта не понимаю мат. анализ и теоретическую механику. То ли ещё будет.
@@sungvin мечта - наркомания, цель - кто не приносит плод и кто закопал свои таланты осужден будет, делай то что полезно.