Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
Differences with a destroyer
Message
 
 
À
30/11/2008 12:05:57
Information générale
Forum:
ASP.NET
Catégorie:
Programmation orienté objet
Versions des environnements
OS:
Windows XP SP2
Network:
Windows XP
Divers
Thread ID:
01364440
Message ID:
01364737
Vues:
11
>>>>>In Visual C++.Net what is the difference between destroyer,Finalize and Dispose?
>>>>>Thank you in advance
>>>>>Luis Martin
>>>>
>>>>This is C#.NET, not C++.NET, so I can't promise it's the same. In C#.NET the Finalize() method cannot be called directly but is invoked by the garbage collector when an object is cleaned up. Normally it does not need to be coded. The exception is if the object utilized unmanaged resources like COM objects. Dispose() is similar but can be called. Its purpose is to release so-called precious resources like database connections immediately rather than waiting for the garbage collector to release them.
>>>>
>>>>Actually I suspect it's the same in C++. It's a .NET thing, not a language thing.
>>>
>>>Hi,
>>>Probably worth pointing out that a class needs to implement IDisposable to use .Dispose().
>>>(Well - not stricly true but not much reason to have a .Dispose otherwise....)
>>>
>>
>>I knew that! I must actually be learning something.
>>
>>However, I have to admit that the penny hasn't really dropped for me about interfaces. I still haven't recognized the benefit. An interface doesn't give you any code at all, just prototypes of methods you have to code yourself. I know they are widely used so it will probably make sense to me one of these days.
>
>Best thing to do is to look at the plethora of interfaces contained within the .NET Framework itself and how they are used - it would be difficult to envisage .NET without them. For example if a class doesn't implement IDisposable the compiler will refuse an attempt to warp it in a 'using' block....
    class Class1 : IDisposable
>    {  public void Dispose(){} }
>
>    class Class2 {}
>
>    class Class3
>    {
>        public void test1()
>        { using (Class1 c = new Class1()) { }}
>
>        public void test2()
>       // Won't compile
>        { using (Class2 c2 = new Class2()) {}}
>    }
I know they have to be useful. It just hasn't clicked for me yet.
Précédent
Suivant
Répondre
Fil
Voir

Click here to load this message in the networking platform