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

Автор: @energy_it

Реклама на бирже: https://telega.in/c/csharp_ready
加入频道
🖥 Ускорение 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
👩‍💻 Шпаргалка по методам списков

В ней собраны самые базовые методы, которые необходимы для выполнения различных операций со списками.

➡️ C# Ready | #шпора
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🤝40🔥12👍7
This media is not supported in your browser
VIEW IN TELEGRAM
CodeWars — одна из лучших платформ с различными заданиями по программированию, вы можете улучшать свой ранг, выполняя практические задания прямо на сайте.

📌 Ссылочка: codewars.com

➡️ C# Ready | #ресурс
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥17🤝5
🖥 Любимый dynamic

В языке C# ключевое слово dynamic кажется универсальным инструментом для создания переменных без строгой типизации. Но этот гибкий подход может скрывать немало подводных камней


Например, если вы создаете переменную так:
dynamic number = "42";
Console.WriteLine(number + 5);


На первый взгляд, можно предположить, что результатом будет число 47. Но dynamic откладывает проверку типов на момент выполнения. В итоге вызов number + 5 даст ошибку во время выполнения, так как number — это строка, а не число.

Теперь попробуем преобразование:
dynamic text = "42";
int result = int.Parse(text);
Console.WriteLine(result + 5); // Результат: 47


В этом примере ошибок не будет, так как явно указан метод int.Parse. Но из-за динамической природы text этот код все равно может повести себя непредсказуемо, если исходное значение text изменится на что-то другое.

Почему важно осторожное использование dynamic? Главная сложность — отсутствие проверки типов на этапе компиляции. В небольших скриптах это может быть удобно, но в крупных проектах это может привести к трудностям в отладке и неочевидным ошибкам.

C# Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥14👍4😁1
📖 Язык программирования C# 6.0 и платформа .NET 4.6

В этой книге рассматриваются ключевые аспекты языка C# 6.0 и платформы .NET 4.6, акцентируя внимание на новых возможностях и улучшениях, которые делают разработку более эффективной и удобной

Автор: Эндрю Т. Филипп Д.
Год: 2017


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

➡️ C# Ready | #книга
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5👍4
🖥 Оптимизируем работу с коллекциями для улучшения производительности

Рассмотрим некоторые варианты оптимизации кода с помощью сегмента памяти, в списках и массивах:

1. Использование сегмента памяти для работы с массивамиSpan<T> позволяет эффективно работать с сегментами массивов или строк без выделения дополнительной памяти:
int[] arr = { 1, 2, 3, 4, 5 };
Span<int> span = arr.AsSpan().Slice(1, 3); // [2, 3, 4]
Console.WriteLine(span.ToArray()); // вывод: 2 3 4


2. Использование списка для уменьшения перераспределений — Если заранее известно, сколько элементов будет в списке, можно установить емкость списка, чтобы избежать лишних перераспределений памяти:
List<int> list = new List<int>(1000); // заранее выделяем память
list.Add(1);
Console.WriteLine(list.Capacity); // вывод: 1000


3. Использование словаря для поиска по ключу — Вместо использования линейного поиска в списке, использование Dictionary обеспечивает быстрый доступ к данным по ключу за время O(1):
Dictionary<string, int> dict = new Dictionary<string, int>
{
{ "apple", 1 },
{ "banana", 2 },
{ "cherry", 3 }
};
Console.WriteLine(dict["banana"]); // вывод: 2


➡️ C# Ready | #техсобес
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🔥5🤝3
🖥 Знакомимся с System.Linq

В этом посте рассмотрим некоторые варианты работы с модулем System.Linq в С#, которые позволяют нам обрабатывать данные под наши нужды

- Фильтрация данных с помощью Where
- Сортировка OrderBy
- Использование Select


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

C# Ready | #гайд
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥33🤝14👍5