Apakah aman untuk menggunakan using
pernyataan pada objek null (berpotensi)?
Perhatikan contoh berikut:
class Test {
IDisposable GetObject(string name) {
// returns null if not found
}
void DoSomething() {
using (IDisposable x = GetObject("invalid name")) {
if (x != null) {
// etc...
}
}
}
}
Apakah dijamin hanya Dispose
akan dipanggil jika objek tidak nol, dan saya tidak akan mendapatkan NullReferenceException
?
c#
idisposable
using
Paolo Tedesco
sumber
sumber
Jawaban:
Ya,
Dispose()
hanya dipanggil pada objek non-null:http://msdn.microsoft.com/en-us/library/yh598w02.aspx
sumber
Dispose()
hanya dipanggil pada objek yang bukan nol".Perluasan untuk
using
memeriksa bahwa objek tidaknull
sebelum memanggilnyaDispose
, jadi ya, aman.Dalam kasus Anda, Anda akan mendapatkan sesuatu seperti:
sumber
Anda harus setuju dengan itu:
Tak terkecuali terlempar ke sini.
Catatan: jangan keliru dengan
foreach
dan diIEnumerable
mana pengecualian akan dilemparkan.sumber
Ya, sebelum Membuang referensi akan dicentang nol. Anda dapat memeriksa diri sendiri dengan melihat kode Anda di Reflector.
sumber
Anda tidak akan mendapatkan pengecualian referensi nol sesuai pengalaman saya. Ini akan diabaikan begitu saja.
sumber