¿Mala práctica? Uso no canónico de la declaración de uso de c #
C # tiene elusing
declaración, específicamente para objetos identificables. Presumiblemente, cualquier objeto especificado en elusing
La declaración tendrá algún tipo de recurso que debería ser liberado de manera determinista.
Sin embargo, me parece que hay muchos diseños en la programación que tienen un principio y un final definidos, pero que carecen de soporte de lenguaje intrínseco. losusing
La construcción ofrece la oportunidad de utilizar las funciones integradas de un editor de código para, al menos, resaltar de manera clara y natural el alcance de dicho diseño u operación.
Lo que tengo en mente es el tipo de operación que frecuentemente comienza con unaBeginXXX()
yEndXXX()
método, aunque hay muchos sabores diferentes, como una ejecución de código asíncrono que implica un "inicio" y una "unión".
Tomemos este ejemplo ingenuo.
webDataOperation.Start();
GetContentFromHardDrive();
webDataOperation.Join();
// Perform operation that requires data from both sources
¿Qué pasa si, en cambio, el método de inicio devolvió un objeto cuyoIDisposable.Dispose
método realiza la operación de unión.
using(webDataOperation.Start()) {
GetContentFromHardDrive();
}
// Perform operation that requires data from both sources
O, mejor aún, lo que tenía específicamente en mente: tengo un objeto que hace gráficos altamente especializados y tiene unBegin()
yEnd()
Método (un diseño también presente en DirectX y XNA). En lugar...
using(blitter.BlitOperation()) {
// Do work
}
// Use result
Parece ser más natural y legible, pero no es aconsejable, ya que utiliza elIDisposable
interfaz y lausing
declaración para fines no deseados? En otras palabras, ¿estaría esto a la par con oVerloading un operador de una manera no intuitiva?