IDisposable è un'interfaccia all'interno della Base Class Library (BCL) di Microsoft .NET Framework. Ha lo scopo di fornire un metodo deterministico generico per il rilascio di risorse non gestite all'interno del codice dell'applicazione .NET.
Dalla lettura della documentazione di Microsoft so che l'uso "primario" IDisposabledell'interfaccia è quello di ripulire le risorse non gestite. Per me "non gestito" significa cose come connessioni al database, socket, handle di finestre, ecc. Ma ho visto il codice in cui il Dispose()metodo è implementato per liberare risorse gestite , …
C # 2008 Ci sto lavorando da un po 'di tempo, e sono ancora confuso sull'uso di finalizzare e disporre i metodi nel codice. Le mie domande sono di seguito: So che abbiamo solo bisogno di un finalizzatore quando disponiamo di risorse non gestite. Tuttavia, se ci sono risorse gestite …
System.Net.Http.HttpClient e System.Net.Http.HttpClientHandler in .NET Framework 4.5 implementano IDisposable (tramite System.Net.Http.HttpMessageInvoker ). La usingdocumentazione della dichiarazione dice: Di norma, quando si utilizza un oggetto IDisposable, è necessario dichiararlo e creare un'istanza in un'istruzione using. Questa risposta utilizza questo modello: var baseAddress = new Uri("http://example.com"); var cookieContainer = new CookieContainer(); using …
DataSet e DataTable implementano entrambi IDisposable, quindi, secondo le migliori pratiche convenzionali, dovrei chiamare i loro metodi Dispose (). Tuttavia, da quello che ho letto finora, DataSet e DataTable in realtà non hanno risorse non gestite, quindi Dispose () in realtà non fa molto. Inoltre, non posso semplicemente usarlo using(DataSet …
Qualcosa di simile a: using (IDisposable disposable = GetSomeDisposable()) { //..... //...... return Stg(); } Credo che non sia un posto adatto per una dichiarazione di ritorno, vero?
È sicuro usare l' usingistruzione su un (potenzialmente) oggetto null? Considera il seguente esempio: class Test { IDisposable GetObject(string name) { // returns null if not found } void DoSomething() { using (IDisposable x = GetObject("invalid name")) { if (x != null) { // etc... } } } } È …
Classi come Stream, StreamReader, StreamWriterecc implementa IDisposablel'interfaccia. Ciò significa che possiamo chiamare il Dispose()metodo su oggetti di queste classi. Hanno anche definito un publicmetodo chiamato Close(). Ora questo mi confonde, su cosa dovrei chiamare una volta che ho finito con gli oggetti? Cosa succede se chiamo entrambi? Il mio codice …
Inizia con queste semplici classi ... Diciamo che ho un semplice set di classi come questo: class Bus { Driver busDriver = new Driver(); } class Driver { Shoe[] shoes = { new Shoe(), new Shoe() }; } class Shoe { Shoelace lace = new Shoelace(); } class Shoelace { …
Il modello IDisposable .NET implica che se si scrive un finalizzatore e si implementa IDisposable, il finalizzatore deve chiamare esplicitamente Dispose. Questo è logico ed è quello che ho sempre fatto nelle rare situazioni in cui un finalizzatore è garantito. Tuttavia, cosa succede se faccio solo questo: class Foo : …
Ho il seguente codice using(MemoryStream ms = new MemoryStream()) { //code return 0; } Il dispose()metodo viene chiamato alla fine delle usingparentesi graffe dell'istruzione, }giusto? Dato che io returnprima della fine della usingdichiarazione, l' MemoryStreamoggetto verrà smaltito correttamente? Che succede qui?
We use cookies and other tracking technologies to improve your browsing experience on our website,
to show you personalized content and targeted ads, to analyze our website traffic,
and to understand where our visitors are coming from.
By continuing, you consent to our use of cookies and other tracking technologies and
affirm you're at least 16 years old or have consent from a parent or guardian.