Coroutine
позволяет «заморозить» выполнение кода и продолжить его позднее, не блокируя главный поток. Это даёт чистое решение для анимаций, откатов, перезарядки оружия.Ключевые моменты:
• Coroutine — мини-процесс внутри MonoBehaviour, запускаемый через StartCoroutine()
• yield return — приостанавливает код, возвращая объект-ожидание (WaitForSeconds, WaitUntil, null и т.д.)
• StopCoroutine(handle) / StopAllCoroutines() — аккуратная остановка одной или всех корутин
Корутины делают код Unity-проектов более читаемым, логичным и простым в поддержке.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥25🤝10❤8👍3
This media is not supported in your browser
VIEW IN TELEGRAM
Он объединяет пошаговые главы, живые примеры, встроенный редактор-компилятор и контрольные викторины: вы пишете и сразу запускаете код в браузере, закрепляя теорию на практике
Please open Telegram to view this post
VIEW IN TELEGRAM
❤14👍6🔥5
Освобождаем ресурсы автоматически с using-statement!
Сейчас научимся гарантированно закрывать файлы и соединения с помощью конструкции
Подключим нужные библиотеки — всё уже есть в стандартной библиотеке:
Представь, что мы читаем файл так:
Если дальше случится исключение, потоки останутся открытыми: файл может заблокировать запись, а память не освободится.
Теперь обернём работу с ресурсами в using:
🔥 После выхода из блока
➡️ C# Ready | #практика
Сейчас научимся гарантированно закрывать файлы и соединения с помощью конструкции
using
. Это спасёт от утечек памяти и «залипших» дескрипторов, когда забывают вызвать Dispose()
.Подключим нужные библиотеки — всё уже есть в стандартной библиотеке:
using System;
using System.IO;
Представь, что мы читаем файл так:
FileStream fs = new FileStream("data.txt", FileMode.Open);
StreamReader reader = new StreamReader(fs);
string text = reader.ReadToEnd();
Если дальше случится исключение, потоки останутся открытыми: файл может заблокировать запись, а память не освободится.
Теперь обернём работу с ресурсами в using:
using (FileStream fs = new FileStream("data.txt", FileMode.Open))
using (StreamReader reader = new StreamReader(fs))
{
string text = reader.ReadToEnd();
Console.WriteLine(text);
}
🔥 После выхода из блока
using
для каждого объекта автоматически вызывается Dispose()
, даже если в середине возникла ошибка.Please open Telegram to view this post
VIEW IN TELEGRAM
❤11👍6🔥5
🔥21👍7❤5
Научимся вызывать callback-функцию каждые
N
секунд, используя System.Timers.Timer
. Интервал задаётся пользователем через консоль — всё просто и наглядно!Ключевые моменты:
• Метод StartClock(Action onTick, double intervalSec) запускает таймер, переводя секунды в миллисекунды.
• Каждое срабатывание вызывает callback — например, вывод текущего времени.
• Интервал запрашивается через ReadInterval() с проверкой корректности ввода.
Этот приём подойдёт и тем, кто уже использует таймеры, и тем, кто только начинает с ними знакомство.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤12🔥12👍6
This media is not supported in your browser
VIEW IN TELEGRAM
Он собрал в себе подробные статьи, пошаговые руководства и примеры кода по C#, ASP․NET, Blazor, Entity Framework и другим технологиям экосистемы Microsoft.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤10🔥6👍4
Он позволяет моментально получить значение по умолчанию для любого типа. Полезно при обнулении переменных, возврате «пустых» значений.
Что важно знать:
• Для значимых типов возвращает «нулевое» значение (0, false, DateTime.MinValue)
• Для ссылочных типов возвращает null — удобно для безопасной инициализации.
• В обобщениях даёт правильное значение по умолчанию, не зная тип заранее.
При работе с большими кодовыми базами default экономит время: помогает сбрасывать поля структур без вызова конструкторов.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥28👍12🤝5❤4
This media is not supported in your browser
VIEW IN TELEGRAM
База реальных собеседований от Т-Банк, Яндекса, Сбера и 100+ топовых компаний. 10 000+ вопросов по Frontend, Backend, DevOps и другим направлениям. Удобный тренажёр, персональная статистика и еженедельные обновления.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥6❤5
Расширяем string своим методом — ToSlug.
Сейчас научимся добавлять собственные методы к стандартным типам в C#, не изменяя их код и не создавая подклассов.
Подключим стандартную библиотеку:
Допустим, у нас есть строка с названием статьи, и мы хотим превратить её в "slug" — пригодную для URL или имён файлов. У стандартного
Создаём статический класс и описываем метод, указав
Теперь мы можем вызывать
Вот что получится при запуске:
🔥 Таким образом ты можешь элегантно добавлять поведение к любым типам — без наследования и без лишнего кода.
➡️ C# Ready | #практика
Сейчас научимся добавлять собственные методы к стандартным типам в C#, не изменяя их код и не создавая подклассов.
Подключим стандартную библиотеку:
using System;
Допустим, у нас есть строка с названием статьи, и мы хотим превратить её в "slug" — пригодную для URL или имён файлов. У стандартного
string
такого метода нет, но мы можем добавить его сами через метод-расширение.Создаём статический класс и описываем метод, указав
this
перед первым параметром:static class StringExtensions
{
static string ToSlug(this string input)
{
return input
.ToLower()
.Replace(" ", "-")
.Replace(".", "")
.Replace(",", "");
}
}
Теперь мы можем вызывать
.ToSlug()
прямо у строки — будто это встроенный метод:string headline = "Новости дня, кратко и ясно.";
string slug = headline.ToSlug();
Console.WriteLine(slug);
Вот что получится при запуске:
новости-дня-кратко-и-ясно
🔥 Таким образом ты можешь элегантно добавлять поведение к любым типам — без наследования и без лишнего кода.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥24👍11❤7
👍16🔥6❤5