menggunakan pernyataan - pastikan penggunaan objek sekali pakai yang benar
Pernyataan ini using
memastikan penggunaan instans yang IDisposable benar:
var numbers = new List<int>();
using (StreamReader reader = File.OpenText("numbers.txt"))
{
string line;
while ((line = reader.ReadLine()) is not null)
{
if (int.TryParse(line, out int number))
{
numbers.Add(number);
}
}
}
Ketika kontrol meninggalkan blok using
pernyataan, instans yang diperoleh IDisposable akan dibuang. Secara khusus, using
pernyataan memastikan bahwa instans sekali pakai dibuang bahkan jika pengecualian terjadi dalam blok using
pernyataan. Dalam contoh sebelumnya, file yang dibuka ditutup setelah semua baris diproses.
await using
Gunakan pernyataan untuk menggunakan IAsyncDisposable instans dengan benar:
await using (var resource = new AsyncDisposableExample())
{
// Use the resource
}
Untuk informasi selengkapnya tentang penggunaan IAsyncDisposable instans, lihat bagian Menggunakan asinkron sekali pakai dari artikel Menerapkan metode DisposeAsync.
Anda juga dapat menggunakan using
deklarasi yang tidak memerlukan kurung kurawal:
static IEnumerable<int> LoadNumbers(string filePath)
{
using StreamReader reader = File.OpenText(filePath);
var numbers = new List<int>();
string line;
while ((line = reader.ReadLine()) is not null)
{
if (int.TryParse(line, out int number))
{
numbers.Add(number);
}
}
return numbers;
}
Ketika dinyatakan dalam using
deklarasi, variabel lokal dibuang di akhir cakupan tempat variabel dinyatakan. Dalam contoh sebelumnya, pembuangan terjadi di akhir metode.
Variabel yang dideklarasikan oleh using
pernyataan atau deklarasi dibacakan secara baca-saja. Anda tidak dapat menetapkan ulang atau meneruskannya sebagai ref
parameter atau out
.
Anda dapat mendeklarasikan beberapa instans dengan jenis yang sama dalam satu using
pernyataan, seperti yang ditunjukkan contoh berikut:
using (StreamReader numbersFile = File.OpenText("numbers.txt"), wordsFile = File.OpenText("words.txt"))
{
// Process both files
}
Ketika Anda mendeklarasikan beberapa instans dalam satu using
pernyataan, instans tersebut dibuang dalam urutan deklarasi terbalik.
Anda juga dapat menggunakan using
pernyataan dan deklarasi dengan instans struktur ref yang sesuai dengan pola sekali pakai. Artinya, ia memiliki metode instans Dispose
, yang dapat diakses, tanpa parameter dan memiliki void
jenis pengembalian.
Pernyataan juga using
dapat berupa formulir berikut:
using (expression)
{
// ...
}
di mana expression
menghasilkan instans sekali pakai. Contoh berikut menunjukkan hal tersebut:
StreamReader reader = File.OpenText(filePath);
using (reader)
{
// Process file content
}
Peringatan
Dalam contoh sebelumnya, setelah kontrol meninggalkan pernyataan, instans using
sekali pakai tetap berada dalam cakupan saat sudah dibuang. Jika Anda menggunakan instans tersebut lebih lanjut, Anda mungkin mengalami pengecualian, misalnya, ObjectDisposedException. Itulah sebabnya kami merekomendasikan untuk mendeklarasikan variabel sekali pakai dalam using
pernyataan atau dengan using
deklarasi.
Spesifikasi bahasa C#
Untuk informasi selengkapnya, lihat bagian menggunakan pernyataan dari spesifikasi bahasa C# dan catatan proposal tentang "penggunaan berbasis pola" dan "menggunakan deklarasi".
Lihat juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk