Pregunta

  

Duplicar posible:
   Lo que hace la tilde (~) media en C #?

class ResourceWrapper
{
    int handle = 0;
    public ResourceWrapper()
    {
        handle = GetWindowsResource();
    }
    ~ResourceWrapper()                     //this line here
    {
        FreeWindowsResource(handle);
        handle = 0;
    }
    [DllImport("dll.dll")]
    static extern int GetWindowsResource();
    [DllImport("dll.dll")]
    static extern void FreeWindowsResource(int handle);
}

¿Qué hace la tilde en la línea indicada.

pensé que era el bit a bit NO operador, de hecho yo realmente no entiendo que no todo el bloque, (la línea comentada y los paréntesis blovk después de él), no es un methd, o un parámetro o cualquier cosa, ¿qué es y por qué hay una tilde antes de que?

¿Fue útil?

Solución

Esto es destructor . Se encarga de que todos los recursos son liberados tras la recogida de basura.

Otros consejos

Esto implementa el finalizador (el método Finalize) de la clase. Normalmente no se debe implementar un finalizador.

por ejemplo. hacer esto para las clases que poseen recursos no administrados externos pero asegúrese de implementar el patrón IDisposable también en este caso.

Como en C ++, ~ClassName es el método destructor. Que es llamado en C # cuando el objeto en cuestión se limpie por el recolector de basura. A diferencia de C ++, donde hay momentos deterministas cuando se llama al destructor, no hay forma de predecir cuándo se va a llamar (o incluso si se va a llamar) en C #.

Lo que probablemente está buscando es el patrón IDisposable, que proporciona un enfoque mucho mejor que esto.

Esto es un Destructor . Se le da un control implícito sobre la liberación de recursos. Es decir, que es llamado por el recolector de basura . Si desea un control explícito sobre la liberación de los recursos, se puede aplicar IDisposable Confirmar de Ejecución finalizar y Dispose para limpiar no administrado recursos. El esquema de diseño Directrices también tiene más información.

Ack, acabo de encontrar la respuesta y no puedo ver cómo eliminar mi pregunta. que especifica el destructor de la clase

no tengo ni idea sobre C #, pero de lo que hace el código, esto parece una Deconstructor, diciendo

  1. liberar el recurso referenciado por handle
  2. set handle a 0 para asegurarse

que tipo de ir de la mano con la noción de "no", así ...:)

Puede que me equivoque, aunque ...

greetz

back2dos

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top