Métodos de extensión con foreach y uso.
Esta nota es una continuación de una anterior publicada en este sitio. Puedes leerla pulsando el siguiente enlace. Ahora, como parte de nuestro curso de C# te hablamos de algunos cambios implementados en C# 8.
Un seguimiento de la propuesta anterior es la capacidad de agregar GetEnumerator o Dispose como método de extensión y hace que funcione con `foreach` o` using` respectivamente. De nuevo, estamos hablando de una característica que solo se usaría en circunstancias muy especializadas. Por ejemplo, podrías agregar un método de extensión Dispose a un objeto COM desde una biblioteca de terceros (que puede ser un buen lugar para llamar a Marshal.ReleaseComObject).
Esta no es una propuesta formal todavía y puede incorporarse a los cambios mencionados en la nota anterior en la declaración 'using'.
Actualmente, una instrucción `using` solo puede ir seguida de un alcance explícito, es decir, un par de llaves u otra instrucción` using`. Si se acepta esta propuesta, puedrás escribir esto en su lugar:
using var a = new MyDisposable();
using var b = new MyDisposable();
using var c = new MyDisposable();
Cada una de estas variables se eliminará automáticamente al final del alcance actual, en orden inverso. Funcionalmente, esto es equivalente a lo anterior, pero es menos detallado y no presenta un nuevo alcance.
using (var a = new MyDisposable())
using (var b = new MyDisposable())
using (var c = new MyDisposable())
{
// Some code
}
Este cambio podría ser especialmente útil cuando se necesitan múltiples objetos desechables, pero no se crean todos al mismo tiempo. Incluso podrías crear objetos desechables en medio de una expresión con la confianza de que se eliminará al final del alcance actual.
Recuerda que C# es parte de .NET Core al igual que VB. Por eso, para mejorar tu uso de estos lenguajes de programación, puede tomar un curso de Visual Basic. También si te interesa el diseño basado en base de datos, puedes tomar un curso de MySQL.