Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥22🤝10👍3
C# предоставляет простой и элегантный способ работы с ресурсами, которые требуют явного освобождения, через интерфейс IDisposable и конструкцию using. Хотя многим разработчикам это кажется базовым знанием, на практике часто можно увидеть ошибки или неочевидные моменты.
Представьте ситуацию, вы работаете с подключением к базе данных или файловым потоком. Обычный способ открытия файла может выглядеть так:
FileStream fileStream = new FileStream("example.txt", FileMode.Open);
// Работа с файлом
fileStream.Close();
Проблема здесь в том, что если произойдет исключение перед вызовом
Close()
, файл останется незакрытым, и это приведет к утечке ресурсов.Использование using для автоматического освобождения
Конструкция
using
автоматически вызывает метод Dispose()
при выходе из блока, даже в случае исключения:using (FileStream fileStream = new FileStream("example.txt", FileMode.Open))
{
// Работа с файлом
}
// fileStream автоматически освобождается здесь
Работа IDisposable
Когда вы создаете собственные классы, которые используют управляемые или неуправляемые ресурсы, реализация интерфейса
IDisposable
гарантирует, что ресурсы будут корректно освобождены:public class ResourceHandler : IDisposable
{
private bool disposed = false;
public void Dispose()
{
if (!disposed)
{
// Освобождение ресурсов
disposed = true;
}
}
}
Жми 🔥 если понравился пост
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥25👍7🤝3
This media is not supported in your browser
VIEW IN TELEGRAM
Uno Platform предоставляет свой фреймворк и туториалы, является отличным выбором для разработчиков, стремящихся создать кроссплатформенные приложения с минимальными затратами времени и ресурсов.
📌 Ссылочка: https://platform.uno
➡️ C# Ready | #ресурс
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥5
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥17👍7🤝3
📖 C# для начинающих
⬇️ Скачать книгу
➡️ C# Ready | #книга
Книга охватывает ключевые концепции C#, включая переменные, циклы, методы и классы. Благодаря простому языку и множеству примеров, читатели быстро освоят основы программирования и начнут создавать приложения.
Автор: Борис Пахомов
Год: 2014
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥2🤝2
Работа с неизменяемыми типами помогает создать более безопасный и предсказуемый код, особенно при работе с многопоточностью.
Рассмотрим ключевые аспекты и способы создания неизменяемых объектов:
1. Использование readonly полей в классах
Readonly
поля позволяют задавать значения только при их инициализации или в конструкторе:public class ImmutablePoint
{
public readonly int X;
public readonly int Y;
public ImmutablePoint(int x, int y)
{
X = x;
Y = y;
}
}
2. record типы для автоматической неизменяемости
В C# начиная с версии 9.0, появились
record
типы, которые автоматически предоставляют неизменяемость и удобные методы работы с ними:public record ImmutablePoint(int X, int Y);
В отличие от классов,
record
типы предоставляют встроенные методы для сравнения объектов и копирования с изменениями:var point1 = new ImmutablePoint(2, 3);
var point2 = point1 with { X = 5 };
Console.WriteLine(point2); // вывод: ImmutablePoint { X = 5, Y = 3 }
3. Создание полностью неизменяемых коллекций
При работе с коллекциями можно использовать типы из библиотеки
System.Collections.Immutable
:using System.Collections.Immutable;
var immutableList = ImmutableList.Create(1, 2, 3);
immutableList = immutableList.Add(4);
Console.WriteLine(string.Join(", ", immutableList)); // вывод: 1,
2, 3, 4
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥3🤝1
В этом посте мы рассмотрим простое создание таймера на C# с добавлением многопоточности. Изучим некоторые вещи:
- Многопоточность для параллельной работы
- Использование потоков
- Реализация метода действия
- Запуск таймера
🔥 — если узнал новое
🤝 — если уже пользовался
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥34🤝12👍7👎2