Рефлексия в C# позволяет получать информацию о типах во время выполнения программы, что полезно для динамического создания объектов, вызова методов и работы с атрибутами.
Этот механизм особенно удобен для задач, требующих высокой гибкости и расширяемости кода.
🔥 — если узнал новое
🤝 — если уже пользовался
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥37🤝17👍5
This media is not supported in your browser
VIEW IN TELEGRAM
Programming skills — платформа, на которой вы найдете много теоретических тестов по, C#, Java, PHP, а так же популярным фреймворкам для этих языков.
⛓ Ссылочка: https://www.pskills.org/
➡️ C# Ready | #ресурсы
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15🔥5
•
String.Concat
— объединяет два или более строковых значения в одну строку. Это простой способ соединить строки без дополнительных разделителей.•
String.Join
— объединяет массив строк с указанным разделителем. Это полезно, когда необходимо создать строку из массива или списка значений.🔥 — если узнал новое
🤝 — если уже пользовался
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🤝25🔥23👍4
Please open Telegram to view this post
VIEW IN TELEGRAM
😁48🔥10
Суть:
Когда нужно, чтобы объект (наблюдаемый) уведомлял других (наблюдателей) об изменениях, на помощь приходит паттерн "Наблюдатель".
Простой пример — приложение, где данные обновляются, а пользователи сразу видят новые сообщения или уведомления.
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("Новая информация");
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥25👍7🤝5
📖 ASP.Net Core в действии
⬇️ Скачать книгу
➡️ C# Ready | #книга
Практическое руководство по созданию веб-приложений с использованием ASP.NET Core, включая ключевые концепции, такие как маршрутизация, middleware, и работа с API.
Автор: Эндрю Лок
Год: 2024
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥4🤝4
Nullable типы позволяют хранить null в переменных значимого типа, таких как int, double и другие. Оператор ?? помогает задать значение по умолчанию, если переменная оказывается null.
Преимущества:
• Nullable типы позволяют работать с неопределенными значениями в строготипизированной среде.
• Оператор ?? делает код чище, заменяя длинные конструкции if на простое выражение.
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
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, чтобы код оставался быстрым и эффективным.
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)) { /* ... */ }
Жми 🔥 если понравился пост
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);
}
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥22👍11🤝5👎2
📖Паттерны проектирования для C# и платформы .NET Core
⬇️ Скачать книгу
➡️ C# Ready | #книга
В этой книге подробно рассматриваются эффективные способы применения паттернов проектирования на языке C# и платформе .NET Core.
Автор: Арораа Г., Чилберто Д
Год: 2021
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥4🤝2👎1