valores una todas tipos retornan que llamar lenguaje las funciones funcion ejemplos como c# syntax tilde

c# - una - tipos de funciones en lenguaje c



¿Qué significa la tilde antes del nombre de una función en C#? (7)

Estoy mirando un código y tiene esta declaración:

~ConnectionManager() { Dispose(false); }

La clase implementa la interfaz IDisposable , pero no sé si eso forma parte de la utilización de la tilde (~).


Este es un finalizer . Para ser honesto, rara vez necesitas escribir un finalizador. Realmente solo necesitas escribir uno si:

  • Usted tiene acceso directo a un recurso no administrado (por ejemplo, a través de un IntPtr ) y no puede usar SafeHandle lo que lo hace más fácil
  • Está implementando IDisposable en una clase que no está sellada. (Mi preferencia es sellar las clases a menos que estén diseñadas para la herencia). Un finalizador es parte del patrón de Disposición canónica en tales casos.

Igual que C ++, es el destructor; sin embargo, en C # no lo llamas explícitamente, se invoca cuando el objeto se recopila.


Se usa para indicar el destructor de la clase.


Un punto en el Finalizador anterior, sobre la situación en la que puede necesitar llamarlo. Necesitas que liberen recursos no administrados, que son más comunes de lo que crees, generalmente para bases de datos. SQLConnection es un ejemplo en el que siempre debes llamar a Dispose () cuando hayas terminado con él.

Un artículo: http://www.codeproject.com/KB/cs/idisposable.aspx


Ver Destructores (Guía de programación C #) . Sin embargo, tenga en cuenta que, a diferencia de C ++, el programador no tiene control sobre cuándo se llama al destructor porque esto está determinado por el recolector de basura.



~ es el destructor

  1. Los descriptores se invocan automáticamente y no se pueden invocar explícitamente.
  2. Destructores no pueden ser sobrecargados. Por lo tanto, una clase puede tener, como máximo, un destructor.
  3. Los destructores no son heredados. Por lo tanto, una clase no tiene destructores más que el que puede declararse en él.
  4. Los destructores no se pueden usar con estructuras. Solo se usan con clases. Una instancia se convierte en elegible para destrucción cuando ya no es posible que un código use la instancia.
  5. La ejecución del destructor para la instancia puede ocurrir en cualquier momento después de que la instancia sea elegible para la destrucción.
  6. Cuando se destruye una instancia, los destructores en su cadena de herencia se llaman, en orden, desde la mayoría derivada a la menos derivada.

Finalizar

En C #, el método Finalize realiza las operaciones que un destructor estándar de C ++ haría. En C #, no lo nombra Finalizar: utiliza la sintaxis del destructor de C ++ para colocar un símbolo de tilde (~) antes del nombre de la clase.

Disponer

Es preferible eliminar los objetos en un método Close() o Dispose() que el usuario de la clase puede llamar explícitamente. Finalize (destructor) son llamados por el GC.

La interfaz IDisposable le dice al mundo que su clase se aferra a los recursos que deben eliminarse y les brinda a los usuarios una forma de liberarlos. Si necesita implementar un finalizador en su clase, su método Dispose debe usar el método GC.SuppressFinalize() para asegurar que la finalización de su instancia se suprima.

Qué usar?

No es legal llamar a un destructor explícitamente. Su destructor será llamado por el recolector de basura. Si maneja valiosos recursos no administrados (como manejadores de archivos) que desea cerrar y eliminar lo más rápido posible, debe implementar la interfaz IDisposable.