CSharp Resources - LIHACHTETAN/ClassicUO-Bad-Newbie-CSharp-Scripts-IDE GitHub Wiki
Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
Звільнення ресурсів: IDisposable, using та await using
IDisposable.Dispose звільняє ресурс, коли він більше не потрібний. using пов'язує звільнення з областю коду; await using очікує IAsyncDisposable.DisposeAsync. Складальник сміття звільняє керовану пам'ять та не замінює своєчасне закриття файлів та інших зовнішніх ресурсів.
Простий приклад (Example.cs)
Збережіть цей приклад окремо як Example.cs. Запускайте його незалежно від інших прикладів на сторінці.
Example.cs:
// PROJECT-EXAMPLE
using System;
using (var stream = new System.IO.MemoryStream())
{
stream.WriteByte(65);
Console.WriteLine(stream.Length);
}
Результат:
1
{
using var stream = new System.IO.MemoryStream();
stream.WriteByte(42);
stream.Position = 0;
UO.Print(stream.ReadByte().ToString());
}
sealed class Lease : IAsyncDisposable
{
public bool Released { get; private set; }
public ValueTask DisposeAsync()
{
Released = true;
return ValueTask.CompletedTask;
}
}
var lease = new Lease();
await using (lease)
{
await WaitAsync(10);
}
UO.Print(lease.Released.ToString());
Офіційна документація: Звільнення ресурсів: IDisposable, using та await using — Microsoft Learn.