КЛЮЧЕВОЕ СЛОВО REF C# | C# ref что это и для чего нужно | C# ОТ НОВИЧКА К ПРОФЕССИОНАЛУ | # 43
Вставка
- Опубліковано 30 тра 2020
- В этом уроке мы изучим ключевое слово 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
Cамый лучший способ сказать "спасибо" - поставить лайк и и поделиться уроком с друзьями. Это очень мотивирует создавать полезные уроки =)
✅Доступ к исходному коду и спонсорство www.patreon.com/SimpleCode
✅ donatepay.ru/don/SimpleCode
✅BTC кошелек: 12oYfJnvt76wjJbpvfhM41m6KPz6uz4LD4
что-что, а объяснять сложное простым языком у вас получается. таких бы людей везде: и в школах, и в универах, и на ютубе)
Тут
Тут
Три раза(от начала до конца) пересмотрел этот урок, только потом начал понемногу понимать.
Аналогично
буквально также посмотрел 3 раза:D
Хз я сразу понял
Ураа! Новый урок! Спс от души просто!!! Боялся что ты забросишь уроки.
Благодарность огромная,учусь по твоим урокам,и другим советую твой канал, который лучший на ютубе по языку с#👍
Кхм-кхм...CodeBlog 🔝
Но,здесь есть плюсы,Сергей раскрывает все детали каждой темы просто и понятно.Но очень долго ждать новых видео-уроков,пока до тех же делегатов дойдем...эх...Ну и практических заданий бы.
@@minoddein7205 у codebloge тоже все понятно но code blog мастер обьяснять простве вещи на протяжение часа
Спасибо за урок!) Ждем List)
Если бы можно было ставить лайк не видео отдельно а всему каналу сразу, я бы автору его поставил... перечитал кучу книг и перепробовал кучу софта с самообучением программированию, но здесь подача просто божественная
Большое спасибо за урок! Жду новых!
Отличные уроки, спасибо! Я в C# хоть и не новичок, но тоже очень полезно пересмотреть. Очень часто наталкиваюсь на что-то новое о существовании которого и не догадывался, а делал раньше по старинке.
Ты не представляешь, как ты мне помог разобраться во многих темах, большое тебе человеческое спасибо!
Один из лучших курсов! Спасибо, что делитесь знаниями!
Спппасибо дяде Сереже за достойный контент
Я человек простой. Вижу видео Сергея, сразу поставлю лайк)
Раньше смотрел в основном англоязычный ютуб, но тут попались вы Сергей и очень понравилось, как вы объясняете. Теперь буду смотреть и вас после этого урока)
Сергей, спасибо за урок! Как всегда всё понятно и вообще супер!)
Сергей, спасибо вам за урок! Сделайте пожалуйста следующий выпуск про использование выходного параметра out.
Ссылка на ссылку.... аж ностальгия по С++ пробила) Спасибо!!!
спасибо! все уроки - очень понятным языком
На каждое видео по csharp ставлю лайк. Спасибо большое за такие понятные уроки, читаю параллельно книгу по unity и еще одну книгу просто про csharp, если бы не ваши уроки, то врятли что-то поняла еще на стадии переменных! Там хоть и стараются авторы писать очень простым языком, но все равно у вас нагляднее и понятнее, возможно еще и потому что вы подаете материал дозированно.
подскажи по юнити книгу
Как много слов , как много информации . Но под конец урока всё таки смог осознать принцип работы этого ref.Спасибо за урок !)
Спасибо за урок!
Мы встроили тебе ссылку в ссылку, чтобы ты мог передавать одну ссылку, пока находишься в другой ссылке)
Огромнейшее спасибо! Такую сложную тему так легко раскидать!
Это талант! Огромное спасибо! Мира вашему дому.
Спасибо за отличные уроки и домашнее задание =)
Очень понятно и классно разъяснил. Спасибо большое.
Спасибо за ваши старания!
Спасибо тебе искренне!
нереально круто обьясняет, в начале урока думал ну пиздец приплыли... и ближе к 22-й минуте я начинал понемногу понимать. это некий симпл в мире кодирования, как симпл в кс го
Спасибо большое за уроки
Благодарю!
Спасибо тебе за эти уроки! Очень внятно и доступно
Как всегда классный урок)
Обалдеть, чуствую себя самым умным на свете после того как всё понял
хахах, понимаю
А ДЗ смог сделать ?
@@vladimir_pl я нет😂, только первое
@@ZuraevD как успехи
@@makesuprise8259 норм, курс то я этот второй раз пересматривал. Ща пока остановился, другие предметы по возможности закрываю. Ну вообще да, обленился я
спасибо Сергей !!!
Ура, новый видос!)
Очень долго ждал этот урок
Спасибо за урок! Всё просто супер!)) Получаю кайф от выполненного дз чисто мной)
Как же круто ты объясняешь.
Спасибо большое за видео)))
наконец-то я поняль! Спасибо, Серега!
Я только начал своё изучение С#
Спасибо за понятные и чёткие уроки. Надеюсь ты не забросиш это дело и доведёш всё до конца👍💪💪
как результат за 2 года?
@@ptichkasinichkamia зарабатывает 300к в наносекунду
Сергей, привет! Сразу лайк, но посмотрю позже)))
Спасибо! Шикарное объяснение
Спасибо. Полезно и позновательно.
На нашем направлении в универе старшекурсники и преподаватели рекомендуют твои уроки!
Отличное видео, отличный парень!
Спасибо за урок
Благодарю за урок.
большое спасибо за столь подробное объяснение
Я познал истину ! Спасибо, Сэнсэй !
Не знал, спасибо за труд!
spasibo za urok, ochen interesno
Отлично!
Спасибо, Сергей!
Уф....Ну что могу сказать... Два дня с перерывами ломал голову. После завершения, понял что хоть я и указываю слово 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());
Ты просто бомба!! 💣 👍
миллион раз спасибо
спасибо. очень четко.
Спасибо за видео и лайк! Сергей, хотелось бы больше практических заданий или ссылку где их брать. Так же было бы интересно , чтоб Вы объяснили , что ещё нужно параллельно учить с языком С# в дополнении. Или пока только эти знания, а потом ещё, что-то?
закипел я на этом видосе, особенно под конец.
Спасииибо!
йоу йоу йоу новый урок))) когда закончились твои уроки начал бегать по всему ютубу как дворняга(
Единственное, что хотелось бы уточнить - иногда даже с ref происходит копирование Value Type'ов и все тут. Например, если структуру инициализировать не с помощью конструктора, а с помощью инициализатора - там можно словить movdqu/movdqa/vmovdqu. Там много условий должно совпасть чтобы это произошло и на поведение программы это не влияет, но может повлиять на производительность.
Идея для следующего видео по Windows Forms: приложение, которое рисует фрактальное дерево, при чём пользователь сам задаёт изначальную длину ветки, делитель каждой следующей ветки, угол поворота и т.д.
Спасибо!
Спасибо !!!
смотрел этот урок 3 года назад и все было понятно, когда сам столкнулся с этой проблемой пересмотрел и понял все, на все 100%
Спасибо .
Спасибо
Благодарю
Спасибо вам ❤😍
16:35 - Недавно столкнулся с такой проблемой по незнанию. У меня это прям головную боль вызвало, почему передавая объект класса в метод тот на выходе ничего не менял. Оказалось ровно то, что Вы объяснили в видео, то есть нужно указывать ref в подобных ситуациях даже для ссылочных данных
Самый лучший обьяснятор на ютубе
Поддерживающий комментарий для дальнейшего развития канала
Спасибо большое
Спасибо большое за урок) Скоро ли будет ООП?
Сложная тема :) Спасибо что много примеров! Лучшие уроки!
я тоже учу сейчас на этом месте)
Давно начал учить C#?
@@ptichkasinichkamia Я его учил года 2 назад тоже по урокам в ютубе, но от Гоши Дударя(2 месяца занимался). Потом забросил, и вот недавно (месяц назад) открыл для себя SimpleCode. Объясняет он на уровень выше чем Дударь и в целом то что я учил 2 года назад оно помогло освежить большинство тем которые были в начале этого курса. Но дойдя до темы null и ref тут я уже как бы столкнулся с чем то новым) Интересно и сложно. Щас сижу пыхчу над домашкой ХD
@@user-ir5ut4tq3e я тоже сейчас её делаю
@@ptichkasinichkamia Осталось сделать удаление элементов массива с начала, конца и по индексу.
Спасибо, понял с 1 раза
Красава
Дам совет для начинающих и тем у кого есть еще не большой опыт. Видео помогает на более лёгкоммастерства
лучший в своём деле
Нашел этот канал случайно, всё довольно доходчиво, но некоторые моменты я иногда не понимаю, и сижу с вопросом в голове ""а зачем так делать если это совсем не нужно""
к чему, я ПЫТАЮСЬ понять язык, но даётся с трудом, особенно какие то моменты, например с дз, просматривая тему, вроде бы как в голове отложилось, и порой понимаешь , что куда откуда и для чего, находишь некую связь, НО когда пытаюсь написать что то сам, например попробовать сделать дз, я вступаю в некий ступор, я не знаю с чего начать, что делать, что за чем следует, как проявить ту или иную задачу в голове. (надеюсь я дойду до уровня когда хотяб начну понимать). Но когда смотрю как ты выполнил дз, я сижу и думаю, так надо было делать так,и как бы понимаю весь код,я могу понять что куда и откуда, но сам писав код, затрудняюсь это делать, дай пару советов, как перебороть в себе этот момент со ступором. По урокам притензий не может, всё довольно доходчиво и хороший голос на слух, но я тупой ))) дай совет!!!
Значит ты не понимаешь, как строится структура самой программы( какая область видимости за что отвечает, где писать методы, а где основной код и тд). Пересмотри первые видосы или просто пиши простые программки по типу додать 2 числа, и постепенно добавляй в них что-то еще(например вывод сообщения). По сути, тебе просто не хватает практики. Вбиваешь в интернете задачки по с# и делаешь одну за другой)
як твої успіхи через рік?
угар хотите ? прошло три года а я до сих пор учу )))))))
Комментарии в поддержку канала. Просьба не забрасывать это дело и конкретно курс по C#.
оч круто
thanks
блин, я сейчас только на 11 уроке, решил посмотреть последний урок.... Да, надеюсб в скором времени я во всем этом буду хорошо разбираться, кстати ты клево объясняешь
вери найс!
Чел ты гений, смотрю для ознакомления и понимаю, что тебе цены не было бы в моем унике
Больше домашек, ушло 4 дня на решение всех, но очень понравилось. Самые сложные - это задания по элементам. Оба решения по элементам, добавлению и удалению, почему-то получились разные. Последнее в разы короче вышло.
А как вам удалось изменить размер массива, не затрагивая при этом другие его элементы и их значения? Как вы смогли ввести изменения в длину массива без метода Resize? Подскажите, я в отчаянии.
Читаю комменты и виду что люди понимают и пишут что все понятно. А я понял только половину с 3 раза. Но я не сдамся, буду смотреть пока не пойму. Все остальное было проще понять.
Указатели плюсов это что-то новое для шарпа)
Вы, тут все какие - то ковбои!
Добрый день! Благодаря Вашим видео легче учить С#, но все же заметил один интересный момент,подскажите пожалуйста,если Вам не сложно)
Дело в том,что когда использую структуру,то так как она не является статичной,то и метод Foo не видит её. Когда же вписываю публичные статические переменные,то метод начинает видеть их. На Вашем видео же вроде не обязательно ставить static перед переменными,когда у меня же требуется в Visual Studio. Немного не понял, почему так произошло,в любом случае с удовольствием буду продолжать смотреть Ваши видео)
Хороший урок. Полезный, интересный и без забегания на 100500 шагов вперёд. Спасибо Сергей!
Ура дз))
Нничего себе, что у тебя за статистика по лайки/дизлайки(1100/1) ?)
Кто хочет задание какое то выполнить, попробуйте такое.
Сделайте змейку. Ставится точка, и от нее уже последующая, после последующей еще одна и.тд....
Для поворотов(Их 4) используйте методы, для методов нужно будет указывать ref, пример работы гляньте у меня) Игрался долго с такой штукой(код так же скину).
(Все должно быть в .Net Core) не фреймворк.
Хочу ответить словами киногероя по youtube запросу: Дядя Джуниор - Клан сопрано
xD придется пересматривать несколько раз)
Можно это интерпретировать вот так:
ref создает еще одно поле в оперативной памяти рядом со стеком, где лежат ссылки на значимые(value type) объекты. Если в голове всё представить именно так, то как и в случае с интерпретацией многомерных массивов как полок с тетрадями, всё очень легко усваивается. Надеюсь кому-то помог)
Наконец то я узнал, зачем он нужен
запели пожалуйста видео где ты создашь проект. Например бильярд, или гонки ..