C# Ready | Unity
7.64K subscribers
664 photos
38 videos
325 links
Авторский канал по разработке на C# и Unity.
Ресурсы, гайды, задачи, шпаргалки.
Информация ежедневно пополняется!

Автор: @energy_it

Реклама на бирже: https://telega.in/c/csharp_ready
加入频道
👩‍💻 Паттерн "Наблюдатель"

Суть:
Когда нужно, чтобы объект (наблюдаемый) уведомлял других (наблюдателей) об изменениях, на помощь приходит паттерн "Наблюдатель".

Простой пример — приложение, где данные обновляются, а пользователи сразу видят новые сообщения или уведомления.

1. Основы паттерна "Наблюдатель"
Он определяет отношения "один ко многим". Класс "наблюдаемый" хранит список объектов-наблюдателей и уведомляет их обо всех изменениях:
public interface IObserver
{
void Update(string data);
// Метод для уведомления
}
public class Subject
{
private List<IObserver> observers = new(); // Список наблюдателей
public void Attach(IObserver observer) => observers.Add(observer);
public void Notify(string data) => observers.ForEach(o => o.Update(data));
// Уведомление всех
}


2 .Реакция на события:
Наблюдатели подписываются на уведомления и реализуют метод Update, чтобы среагировать на изменения:
public class ConcreteObserver : IObserver
{
public void Update(string data) => Console.WriteLine($"Обновлено: {data}");
}


3. В действии:
Создаем объект Subject, добавляем пару наблюдателей и уведомляем их о новом событии.
var subject = new Subject();
var observer1 = new ConcreteObserver();
var observer2 = new ConcreteObserver();
subject.Attach(observer1);
subject.Attach(observer2);
subject.Notify("Новая информация");


➡️ C# Ready | #теория
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥25👍7🤝5
📖 ASP.Net Core в действии

Практическое руководство по созданию веб-приложений с использованием ASP.NET Core, включая ключевые концепции, такие как маршрутизация, middleware, и работа с API.

Автор: Эндрю Лок
Год: 2024


⬇️ Скачать книгу

➡️ C# Ready | #книга
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥4🤝4
👩‍💻 Nullable типы и оператор ??: что это и как использовать

Nullable типы позволяют хранить null в переменных значимого типа, таких как int, double и другие. Оператор ?? помогает задать значение по умолчанию, если переменная оказывается null.

Преимущества:
• Nullable типы позволяют работать с неопределенными значениями в строготипизированной среде.

• Оператор ?? делает код чище, заменяя длинные конструкции if на простое выражение.


➡️ C# Ready | #собеседование
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍26🔥6🤝6
This media is not supported in your browser
VIEW IN TELEGRAM
Blazor – это фреймворк от Microsoft, который позволяет создавать интерактивные веб-приложения с использованием C# вместо JavaScript. Blazor позволяет писать клиентский код на C#, HTML и CSS, что делает его удобным для разработчиков, предпочитающих .NET-экосистему.

Ссылочка: https://dotnet.microsoft.com/ru-ru/apps/aspnet/web-apps/blazor

➡️ C# Ready | #ресурс
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18🔥7🤝6
👩‍💻 Шпаргалка по методам строк в C#

Шпаргалка по методам строк в C# охватывает ключевые функции работы с текстом, такие как изменение регистра, извлечение подстрок, замена и разделение строк с наглядными примерами для быстрого применения.

➡️ C# Ready | #шпора
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥29🤝22👍7
🖥 Ускорение LINQ-запросов

LINQ-запросы позволяют элегантно обрабатывать данные, но иногда не лучшим способом это сказывается на производительности.

Рассмотрим, как оптимизировать LINQ, чтобы код оставался быстрым и эффективным.

1. Избегайте многократного вызова .Where

В LINQ каждый вызов .Where создаёт дополнительную операцию фильтрации, что может замедлить выполнение:
var result = data
.Where(x => x.IsActive)
.Where(x => x.Age > 18);


Лучше объединить условия в одном вызове, чтобы избежать лишней итерации:
var result = data.Where(x => x.IsActive && x.Age > 18);


2. Используйте ToList() и ToArray() с умом

ToList() или ToArray() создают коллекцию сразу, но применять их нужно осторожно, чтобы не перегружать программу ненужными данными в памяти:
var activeUsers = data.Where(x => x.IsActive).ToList(); // может перегрузить память

Если коллекция понадобится позже, сохраняйте запрос как IEnumerable, чтобы отложить его выполнение.

3. Используйте Any() вместо .Count()

Если нужно проверить наличие элементов, то здесь Any() быстрее, чем Count() > 0, так как завершает поиск сразу после нахождения первого подходящего элемента:
if (data.Any(x => x.IsActive)) { /* ... */ }


Жми 🔥 если понравился пост

C# Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥51👍7🤝5
This media is not supported in your browser
VIEW IN TELEGRAM
Git How To — сайт, который предлагает пошаговые руководства и практические примеры для изучения системы контроля версий Git, облегчая процесс освоения её основных команд и функционала.

Ссылочка: https://githowto.com/ru

➡️ C# Ready | #ресурс
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15🔥6🤝3👎1
🖥 Управление исключениями

Исключения крайне важны при написании кода, не везде вас спасет if else, в этом посте разберем основные принципы работы исключений.

1. Использование блоков try и catch: для перехвата и обработки исключений в коде:
try {
int result = 10 / int.Parse("0");
} catch (DivideByZeroException ex) {
Console.WriteLine("Деление на ноль: " + ex.Message);
}


2. Создание пользовательских исключений: для более специфичной обработки ошибок:
public class CustomException : Exception {
public CustomException(string message) : base(message) {}
}
throw new CustomException("Произошла ошибка!");


3. Использование finally: для выполнения кода независимо от того, произошло исключение или нет:
try {
// код
} catch (Exception ex) {
Console.WriteLine(ex.Message);
} finally {
Console.WriteLine("Этот код выполнится в любом случае.");
}


4. Множественные catch блоки: для обработки различных типов исключений отдельно:
try {
// код
} catch (FormatException ex) {
Console.WriteLine("Неверный формат: " + ex.Message);
} catch (DivideByZeroException ex) {
Console.WriteLine("Деление на ноль: " + ex.Message);
}


C# Ready | #техсобес
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥22👍11🤝5👎2
📖Паттерны проектирования для C# и платформы .NET Core

В этой книге подробно рассматриваются эффективные способы применения паттернов проектирования на языке C# и платформе .NET Core.

Автор: Арораа Г., Чилберто Д
Год: 2021


⬇️ Скачать книгу

➡️ C# Ready | #книга
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥4🤝2👎1
🖥 Асинхронное программирование

В этом посте мы рассмотрели некоторые варианты работы с асинхронностью, это важный момент при написании оптимизированных программ:

• Оператор await
• Объявление асинхронного метода с async
• Обработка ошибок, при асинхронном программировании нужно быть бдительным к данным, поэтому очень важно отлавливать ошибки


Особенности и использование смотри в картинках выше!


🔥 — если узнал новое
🤝 если уже пользовался

C# Ready | #гайд
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥41🤝26👍5👎2
😎 Отличная статья с Хабра: Управление зависимостями с Autofac в C#

В этой статье:
• Вы познакомитесь с библиотекой Autofac для внедрения зависимостей в C#.

🔊 Реально советую ознакомится на Habr!


➡️ C# Ready | #статья
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥3