Структуры в C# | структуры и классы отличия | struct vs class | C# ОТ НОВИЧКА К ПРОФЕССИОНАЛУ | # 81
ฝัง
- เผยแพร่เมื่อ 17 ก.ย. 2024
- В этом уроке мы рассмотрим тему структуры в языке программирования C#. Выясним в чём разница между структурами и классами на примере бенчмарков, а так же ответим на вопрос когда использовать структуры, а когда классы.
➡️ Мой курс C# ОТ НОВИЧКА К ПРОФЕССИОНАЛУ на Udemy
👉 www.udemy.com/...
✅ ИСХОДНЫЙ КОД / iskhodnyi-kod-k-52476606
🔹 Telegram канал t.me/SergeySim...
🔹 Наша группа ВК smplcode
✅ Доступ к исходному коду и спонсорство / simplecode
✅ donatepay.ru/d...
✅ BTC кошелек: 12oYfJnvt76wjJbpvfhM41m6KPz6uz4LD4
🔹 Подписывайтесь на канал / @simplecodeit
✅ ССЫЛОЧНЫЕ И ЗНАЧИМЫЕ ТИПЫ C# | СТЕК И КУЧА C# | REFERENCE AND VALUE TYPES C# | C# Уроки | # 38 • ССЫЛОЧНЫЕ И ЗНАЧИМЫЕ Т...
✅ ЧТО ТАКОЕ NULL | C# ОТ НОВИЧКА К ПРОФЕССИОНАЛУ | # 39 • ЧТО ТАКОЕ NULL | C# ОТ...
✅ КЛЮЧЕВОЕ СЛОВО REF C# | C# ref что это и для чего нужно | C# ОТ НОВИЧКА К ПРОФЕССИОНАЛУ | # 43 • КЛЮЧЕВОЕ СЛОВО REF C# ...
✅ МОДИФИКАТОР IN C# и бенчмарк | РАЗНИЦА между IN REF и OUT | C# ОТ НОВИЧКА К ПРОФЕССИОНАЛУ | # 45 • МОДИФИКАТОР IN C# и бе...
✅ Что такое класс | ООП C# | Что такое объект класса | Экземпляр класса | C# Уроки | # 55 • Что такое класс | ООП ...
✅ Полиморфизм | виртуальные методы c# | virtual override c# | C# ОТ НОВИЧКА К ПРОФЕССИОНАЛУ | # 75 • Полиморфизм | виртуаль...
✅ Benchmarkdotnet | как измерить производительность кода | Benchmark вашего кода C# • Benchmarkdotnet | как ...
#сишарп #simplecode #урокипрограммирования
Cамый лучший способ сказать "спасибо" - поставить лайк и и поделиться уроком с друзьями. Это очень мотивирует создавать полезные уроки =)
✅Доступ к исходному коду и спонсорство www.patreon.com/SimpleCode
✅ donatepay.ru/don/SimpleCode
✅BTC кошелек: 12oYfJnvt76wjJbpvfhM41m6KPz6uz4LD4
Сергей, здравствуйте ваш канал параллельно с прочтением литературы дают полное понимание всех аспектов языка. Но у меня вопрос мы рассмотрели уже подробно методы и хорошо понимаем ссылочные типы, почему же вы возвращаетесь в начало и рассказываете об основах вместо того чтоб начать раскрывать тему делегатов?
Здравствуйте мои дорогие. Мне предлагают курс junior Python developer за 90 тысяч рублей. Обещают сделать из меня пайтон джун разработчиком за 420 часов учёбы и практики(всё вместе). Это реально? Или очередной лохотрон???
@@MaxMayer1 я предлагаю тебе за миллион стать умным 😊
@@andreyandreevich6857 давай, я согласен. Где мне получить миллион?))))
@@MaxMayer1 короче мой комент хотел донести что на заборе тоже пишут и ни какие курсы никого из тебя не сделают только сам
Сергей, если бы вы только знали как мы любим Вас и Ваши чудесные уроки 😁
Оказавшись в неизбежной ситуации "посмотрел все текущие видео плейлиста", мой формат изучения перешел в книги. Однако, даже если тему уже рассматривал самостоятельно, каждый ваш новый ролик - ценный актив.
Спасибо вам Сергей, за столь качественную подачу материала, благодаря которой закрепилось желание развиваться в C#.
И как успехи? Какие книги прочитали?
@@nikitaryabicov3496 1984 Оруэл
Сергей, я сейчас прохожу Ваш курс по C#, (уже на 6 уроке), хочу стать разработчиком на Unity, и я зашёл сюда, чтобы сказать Вам спасибо!
Только сразу в юнити не иди. Советую курсы itvdn(можно спиратить). И книгу Э. Троелсона и Ф. Джепикса про с#(там длинное название). Для начинающих самое то.
Эрнест ну как у тебя успехи? Не забросил?
Эрнест,ну че там?как успехи?
Эрнеэээст ??!
@@Ванек-в6д Эрнеста с нами больше нет(.
Спасибо Вам огромное что объясняете сложные вещи простым языком :)
▶️ Отличный урок по структурам в C#
▶️ Детально и понятно
👍🏻 Спасибо и лайк, конечно!
Отличный урок. Спасибо за Ваши видео. На 25:00 немножко заговорились: класс в отличие от структуры не позволяет реализовать логику наследования
Ура новому ролику! А то каждый раз переживание, что всё...
Сергей, салют!
Благодарю!
Сергей, ролики от Вас с какой либо историей или советом набирают больше просмотров, СНИМАЙТЕ БОЛЬШЕ СЕБЯ И ДЕЛИТЕСЬ СОВЕТАМИ И КАКИМИ ЛИБО ИСТОРИЯМИ ( С ВАШЕЙ РАБОТЫ НАПРИМЕР) - БОЛЬШЕ. МЫ С УДОВОЛЬСТВИЕМ ЖДЁМ!)
25:03
"Класс в отличие от Структур не позволяет реализовать логику наследования"
чуть-чуть оговорились))
Спасибо за уроки!
тоже заметил) только хотел написать, хахах
Спасибо огромное за урок. Всё настолько хорошо изложено, что я ставлю лайк до просмотра урока без сомнения!
Достаточно полезные знания для людей, которые хотят повышать быстродействие своего кода. Такое даже можно жирным выделять, чтобы начинающие с самого начала начинали думать о более рациональном использовании памяти.
спасибо за урок!
То приятное чувство, когда привык к твоему написанию кода и уже когда вижу строчки например public void Print() - сразу ага значит тут мы будем выводить в консоль. И в в остальном также. Спасибо. Надеюсь чужие когда тоже так буду читать и понимать что там будет сразу )
Что ж, мы стали чуточку умнее) спасибо за видос.
Сергей спасибо вам огромное...!
Спасибо за урок.
Огромное Вам спасибо Сергей за ваши уроки, благодаря им С# оказался не таким уж и страшным языком каким себе представлял ранее. За два месяца пересмотрел почти все ваши уроки, почему почти? Осталось только 102, 103, 104 ролик :). Практика, конспект и ваши уроки дали неплохую базу для дальнейшего изучения С#. Теперь мечта стать Unity разработчиком вполне реальна и благодаря Вам появилась уверенность, что упорство и правильная подача материала творит чудеса! ))
@hurka видимо никак
Прекрасный труд, Сергей! Нижайше тебе благодарность.
Шикарные уроки. Благодарю от всей души. Развития Вашему каналу и удачи Вам .
Огромное спасибо. Это наверное лучшее объяснение различий и принципах работы структур и классов
Спасибо за урок. Сначала подумал, что будет сложно, но объяснили все доступно.
ребята, дождалииись!
желаю вам здоровья и долгих лет, вы человек с огромной душой и добрым сердцем, раз сделали такой качественный материал доступным всем желающим
Очень интересный и полезный урок! Смотрел с открытым ртом! Потрясающе! Спасибо Сергей!
Приятно наблюдать, что количество подписчиков понемногу растет, два месяца назад начала проходить курс, было где-то 225-230, сейчас 237К))
Сергей, здравствуйте! Учу по вашим видео C#, сейчас остановился на 13 выпуске, очень нравится то как вы преподаете материал. Спасибо вам за ваш труд!
Большое спасибо за обучение, так держать!
Шикарный урок, спасибо!
Дай Бог вам всего самого наилучшего за ваш труд 💲💲💲
Спасибо за урок!
Благодарю. Дай бог здоровья.
Ждал эту тему. Надеюсь с вашей помощью уясню эти различия
К концу видео мой мозг уже не выдержал 😂 🤯
Абсолютно гениально все, спасибо за уроки большое!
Благодарю за Урок.
Сергей, спасибо Вам огромное, лучше не объяснить!
Ждем уроки по С# в Unity ;)
Правда, было бы здорово от Вас увидеть такой материал!
Спасибо большое ❤
Хорошее сравнение, молодец!
Спасибо за урок, было круто !*) Уже осталось пару видео до конца)
Для меня пока сложно всё, но объяснения хорошие, подробные.
как успехи? Начала около полугода назад, только добрался сюда, начал с абсолютного нуля, аьсолютнейшего, даже как пользователь ПК, сегодня смог дослушать не теряя нити...
Я всё видео ждал, когда автор скажет про гайдлайны разработки структур. Если в дальнейшем будут еще видео по теме структур, то стоит обязательно об этом упомянуть.
Сергей, у вас оговорка по моему на 25:00 "Класс в отличии от структуры не позволяет реализовать логику наследования".
я сейчас на 7 уроке и перешел к вам от одного ютубера который снимает как делает игры , сказал что учился по вашим урокам
Очень полезный урок! Лайк однозначно! Только вот не упомянулось про "static class" vs "struct".
25:03 ачипятка! В смысле - оговорка)
Сергей, спасибо!
Сложная тема для восприятия и тем более для объяснения. Там было несколько оговорок, но эта самая критичная, да
под вечер уже не соображаю, подскажите, в чем оговорка?
@@____-fh4wx "Класс, в отличие от структуры, не позволяет реализовать логику наследования...", говорит Сергей. А на самом деле всё строго наоборот, о чем он нам и вбивал мысль в течение всего урока)
@@ДиванныйВоин-щ4п спасибо
Сергей, сделайте урок по LINQ, пожалуйста)
Благодарю Вас
Комментарий для продвижения канала.
И еще один от души?)
Ураа
Я бы Вам ещё раз лак поставил. Но уже некуда. Вашими роликами пользуюсь как справочником. Очень удобно. =)
как всегда супер!!!
Спасибо!
"Теперь живите с этим"🤣🤣🤣
топовый урок , все по полочкам прямо !
биг ап
Лайк вне очереди!
Поставлю лайк, а посмотрю попозже.
А что если использоваться на структурах ref и out, то что будет со скоростью? Задал этот вопрос в середине видоса.
Приятно когда препод на шаг впереди
Сергей! Отличные уроки, замечательно излагаете! А уроки по Unity - будут? Хотелось бы услышать об особенностях использования C# в Unity именно от вас.
Зачем человеку, который не интересуется/косвенно интересуется (если судить по контенту канала) игростроем/геймдевом выкладывать на канал целые гайды/курсы по движку(изучать тему, выделять время для записи, которого и так немного) материала по которому в интернетах как тараканов на планете Земля.
А что касается особенностей - создаёшь объект в юнити (физическое тело) вешаешь на него скрипт, который отвечает за определенное действие - вот и все особенности. Выучить команды и библиотеку не составит труда, если читать официальную документацию.
Спасибо подписка
Я словил дзен после видео !
Наконец-то я понял суть отличий
а в чем разница между ObservableCollection и List ?
На метаните есть материал про коллекции в C#
@@ShomLZ Что то, только там нет информации, об отличии от List.
@@xamarin813 по моему там все доступно описано, это просто апнутый лист с бОльшим функционалом, выкидывает ивент, если меняется коллекция
@@MacKorWoT спасибо
Хороший ролик
В .Net DateTime - структура. Внутри её очень много свойств и методов. Но несмотря на это DateTime структура, а на класс
Сергей, спасибо за урок. Изучаю C# и API Unity. Как вы сказали, в Unity струтура Vector3 используется для повышения производительности. Но тем не менее, в ней достаточно много статических свойств, переменных и методов. Можете это прокомментировать?
статические члены конкретного типа хранятся всегда в куче в соответствующем типовом объекте, он существует на протяжении выполнения всего приложения в единственном экземпляре и gc их не очищает, поэтому статика никак не влияет на производительность
А что происходит в ОП когда в структуру помещаешь массив или например переменную типа string? Как и где в таком случае это всё хранится?
Очень хороший вопрос. Мне тоже стало интересно, и чтобы долго не искать ответ, я спросил у ChatGPT. Он мне привел небольшой пример и вывод:
In summary, creating a reference type within a struct doesn't change the fundamental behavior of reference types and value types. The reference type object will still be allocated on the heap, and the struct will contain a reference to that object.
Надеюсь, я помог вам )
@@alexanderasaturyan8334 Ого, уже успел забросить язык C# и выучить JavaScript, а тут ответили, но в любом случае спасибо)
@@nikitaryabicov3496а чё забросил то
@@kalipso5785 потому что понял, что мне не интересны сферы, в которых этот язык применяется, да и работы на этих языках нету, по крайне мере у меня в городе, ушёл в JS и работа сама меня нашла)
@@nikitaryabicov3496 Вы нашли работу по чистому JS или это фронтенд + фреймворк?
9к просмотров и всего 831 лайк... Некрасиво как-то. Лучший канал. Спасибо тебе Сергей, за твоё время и твой труд!
1к10, обычное соотношение лайков к просмотрам
Редко доначу, Но тут задонатил ибо контент годный
Подписался.
Спасибо за урок! Всем привет кто дошел до сюда)
Сергей, во что вы любите поиграть?)
о подьехал урок спасибо я погнал а то не дождусь
Сергей, на 25 минуте оговорочка вышла, вы там случайно сказали, что класс не позволяет реализовать наследование
Все уроки очень классные, смотрела наверное почти все по с#, но структуры мне не нравятся как объясненны
то есть через обращение методов с добавление ссылки класса, mystruct берет данные и копирует, тем самым замедляя код, а myclass сразу обращается к данным, я вот только понял интерфейсы, а тут опять ультанули.
Если сборщик мусора не работает для структур, то как в этом случае освобождается/освобождать память?
указатель стека просто сдвигается обратно вниз, данные просто оказываются как бы "за пределами стека" и в будущем будут перезаписаны, когда стеку надо будет снова расшириться
Если вы не очень поняли комментарий сверху, загуглите видео "Защищая С++" как то так. Там описаны проблемы работы со стеком, но всеравно можно будет легко понять как стек работает
Сижу я такой на 39 уроке из 100, думаю что скоро уже досмотрю, а видео то продолжают выходить) И не понятно, сколько же еще видео в этом плейлисте будет? Я то думал что посмотрев эти 100 видео стану настоящим профессионалом :0
скорее всего как и в плюсах будет примерно 200 видосов
@@Двадцатьодинзатуп тогда мой лайфхак о просмотре видеоуроков на скорости 1,25 сэкономит еще море времени)
Я на 35 уроке))
ну и как успехи стали профи?
@@GGamess Не совсем. Посмотрел где-то 80 уроков, и понял, что не очень то я и хочу делать игры в unity, потому что лучше игры MInecraft уже не сделать. По крайней мере с нынешними технологиями.
коммент для продвижения
Что-то я не понял про хранение структур в массиве. Ты сказал, что по ссылке в управляемой куче хранятся настоящие данные, но сказал, что они якобы там. Так откуда в итоге берется информация: из стека, или из управляемой кучи?
Я так понял что название массива (ссылка на данные) хранится в стеке. А сами данные, то есть объекты структур хранятся в куче. Это то же самое что и массив int (int тоже структура). Да и бенчмарк показывал что массив структур занимает место в куче.
Ваш процессор в 4 раза мощнее моего)
К сожалению не могу понять как все это повторить с на VSC. В частности подключить эту библиотеку Benchmark.(
разрешите вопрос. а что тогда создается в памяти при int a; ? если в памяти создается уже дефолтное значение?
0
теперь живем с этим
Кстати, как Вам идея сделать курс по Java, когда Вы закончите C#?
А чем структура отличается от enum?
где же новые видео???
Compilation error == Cannot assign to a member of variable 'in PointStruct' because it is a readonly variable ?
Когда передаёте какой-либо объект в качестве параметра в метод с модификатором in, внутри метода этот объект изменить нельзя. О чём и говорит ошибка: Невозможно выполнить присвоение значения переменной PointStruct, т.к. данная переменная имеет доступ только для чтения. Проще говоря, значение параметра можно использовать для вычислений, но нельзя менять внутри метода.
@@tikh стоит использовать ref?
@@nightyonetwothree Как вариант. Модификатор ref позволяет изменять объект, модификатор out тоже позволяет и даже требует присвоение значения внутри метода, in - запрещает
Короче, если данных не слишком много и не нужен полиморфизм - то структура, если данных много и нужен полиморфизм - то класс. Как-то так?
Разве нельзя передавать структуру в функцию по ссылке, с помощью ключевого слова ref???
Пересмотрите урок
Здравствуйте мои дорогие. Мне предлагают курс junior Python developer за 90 тысяч рублей. Обещают сделать из меня пайтон джун разработчиком за 420 часов учёбы и практики(всё вместе). Это реально? Или очередной лохотрон???
Почитай программу курса, ознакомься с особенностями преподавания.
Изучаю Unity на курсе от Skillbox, однозначно помогают в том плане, что информация подаётся упорядоченной структурой и системно (нисколько не реклама, просто личное мнение). Многое отрабатываешь на практике в проектах, плюс обратная связь.
Если хреново с дисциплиной, тяжко себя заставлять делать что-либо - бери курс.
Решать Вам.
а ведь кто то поставил дизы, нельзя так
спасибо. на 25 минуте оговорка небольшая.
Спасибо огромное!
Спасибо!