В этом посте мы рассмотрели некоторые варианты работы с асинхронностью, это важный момент при написании оптимизированных программ:
• Оператор await
• Объявление асинхронного метода с async
• Обработка ошибок, при асинхронном программировании нужно быть бдительным к данным, поэтому очень важно отлавливать ошибки
Особенности и использование смотри в картинках выше!
🔥 — если узнал новое
🤝 — если уже пользовался
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥41🤝26👍5👎2
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
В языке 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? Главная сложность — отсутствие проверки типов на этапе компиляции. В небольших скриптах это может быть удобно, но в крупных проектах это может привести к трудностям в отладке и неочевидным ошибкам.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥14👍4😁1
📖 Язык программирования C# 6.0 и платформа .NET 4.6
⬇️ Скачать книгу
➡️ C# Ready | #книга
В этой книге рассматриваются ключевые аспекты языка C# 6.0 и платформы .NET 4.6, акцентируя внимание на новых возможностях и улучшениях, которые делают разработку более эффективной и удобной
Автор: Эндрю Т. Филипп Д.
Год: 2017
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
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🔥5🤝3
В этом посте рассмотрим некоторые варианты работы с модулем System.Linq в С#, которые позволяют нам обрабатывать данные под наши нужды
- Фильтрация данных с помощью Where
- Сортировка OrderBy
- Использование Select
🔥 — если узнал новое
🤝 — если уже пользовался
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥33🤝14👍5
This media is not supported in your browser
VIEW IN TELEGRAM
Microsoft Learn — Официальная платформа от крупной корпорации, здесь собрано множество крутых курсов, которые помогут тебе углубиться в своей сфере
📌 Ссылочка: learn.microsoft.com
➡️ C# Ready | #ресурс
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15🔥5🤝2
1. Использование коллекции `List<T>` вместо массива для динамического добавления элементов — Использование
List<T>
позволяет добавлять элементы без необходимости заранее определять размер коллекции:List<int> numbers = new List<int> { 1, 2, 3 };
numbers.Add(4);
Console.WriteLine(string.Join(", ", numbers));
// вывод: 1, 2, 3, 4
2. Использование `LINQ` для фильтрации коллекций — С помощью LINQ можно легко фильтровать элементы коллекции, сокращая код:
List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
var evenNumbers = numbers.Where(n => n % 2 == 0).ToList();
Console.WriteLine(string.Join(", ", evenNumbers)); // вывод: 2, 4
3. Использование `Dictionary<TKey, TValue>` для поиска значений по ключу: —
Dictionary
позволяет быстро искать элементы по ключу за время O(1), что делает код эффективным:var dictionary = new Dictionary<string, int> { { "apple", 1 }, { "banana", 2 } };
Console.WriteLine(dictionary["apple"]);
// вывод: 1
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥23👍7🤝5
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥22🤝10👍3