Lo que hace el (~) tilde hacen aquí [duplicado]
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?
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
- liberar el recurso referenciado por
handle
- set
handle
a0
para asegurarse
que tipo de ir de la mano con la noción de "no", así ...:)
Puede que me equivoque, aunque ...
greetz
back2dos