He aquí un ejemplo común:
1234567891011121314151617 usando System;namespace scopesandaliases{classProgram{staticvoidMain(string[] args){ Console.WriteLine("Vengo del espacio de nombres del Sistema"); Console.Write("Di algo bonito:");var said = Console.ReadLine(); Console.WriteLine($"Dijiste: {said}"); Console.ReadKey();}}
csharp
La salida se ve así si usted dice: ¿Qué dices?
¿Qué pasa aquí? La primera sentencia de usando en la parte superior de la aplicación le dice al compilador que necesitas todo lo del espacio de nombres de System . De esta manera, puedes referirte a las funciones WriteLine , Write , y ReadLine con la consola . prefijo. Si quieres, puedes ir más lejos y más profundo modificando tu script. Puedes crear un alias para la clase Console y alias con usando .
123456789101112131415161718usando C = System.Console;namespace scopesandaliases{classProgram{staticvoidMain(string[] args){ C.WriteLine("Vengo del espacio de nombres System"); C. Write("Say something nice:");var said = C.ReadLine(); C.WriteLine($"You said: {said}"); System.Console.WriteLine("This is still working!"); C.ReadKey();}}}
csharp
La salida se ve así, después de que respondas: Las clases de alias también son divertidas.
1234Vengo del sistema de nombres espacialesDiga algo bonito: Las clases de alias son divertidas también. Usted dijo: Las clases de alias también son divertidas. ¡Esto sigue funcionando! bashLa funcionalidad básica sigue siendo la misma. Observe cómo la línea de escritura System.Console.WriteLine totalmente cualificada sigue siendo accesible para su aplicación, ya que puede hacer referencia a las clases y métodos con sus nombres totalmente cualificados, a pesar del alias. Añade una funcionalidad extra al permitir al desarrollador codificar más rápido y de forma más eficiente debido a un acceso más corto a la funcionalidad en el espacio de nombres. No afecta la velocidad de desarrollo de manera negativa.
Aquí hay otro ejemplo con la clase de Matemáticas. Como se mencionó anteriormente en los tres casos de uso para el alias, uno es sacar una referencia de una clase a los miembros estáticos y ponerles un alias. En la clase de Matemáticas, tienes dos miembros estáticos: E y PI . Si quieres referenciarlos sin el utilizando el alias , necesitas utilizar el nombre completo como System.Math.E o System.Math.PI .
Vamos a crear una versión más corta con el usando la palabra clave estática .
12345678910111213141516usingstatic System.Math;using System;namespace scopesandaliases{classProgram{staticvoidMain(string[] args){ Console.WriteLine($"El valor de E es: {E}"); Console.WriteLine($"El valor de PI es: {PI}"); Console.ReadKey();}}}csharp
La salida se ve así:
12El valor de E es: 2.71828182845905El valor de PI es: 3.14159265358979bash
Imagina una aplicación que hace referencia a PI o E varias veces a lo largo. Esta técnica no sólo ahorra tiempo, sino que también hace que el código sea más fácil de leer.
Otro caso de uso común de la palabra clave que utiliza es la manipulación de archivos u objetos relacionados con la red. Veamos un ejemplo en el que se escribe un texto en un archivo.
12345678910111213141516171819202122usando el Sistema;usando SW = System.IO.StreamWriter;namespace scopesandaliases{classProgram{staticvoidMain(string[] args){string[] linesToWrite ={"Written", "Guides", "Are", "Really", "Cool! "usando(SW myFile =newSW(@"C:TempMyFile.txt")){para cada(string line in linesToWrite){miFile.WriteLine(line);}} Consola. ReadKey();}}csharp
La salida de esta aplicación es un archivo llamado MyFile.txt , que contiene el siguiente contenido:
12345Guías escritasRealmente genial!bash
Veamos lo que pasa aquí. Creaste un alias para la clase System.IO.StreamWriter llamada SW . Tienes una matriz de cadenas que contiene cinco elementos. El bloque que utiliza se utiliza para escribir estos elementos en el archivo, un elemento cada vez. Podrías haber hecho un alias de FileStream también, pero la diferencia sería que escribe bytes en la salida, mientras que StreamWriter codifica la salida.
La sentencia using envuelve la acción que realizas en el sentido de que el IDisposable.Dispose es llamado en el objeto de flujo una vez que las acciones se completan, y los recursos, como el manejador de archivos y la memoria relacionados con esta acción, son liberados. Esto ayuda a la limpieza de la aplicación después de que la tarea se ha realizado y no utiliza los recursos más tiempo del que realmente se necesitan. Tu StreamWriter tiene un importante y útil argumento adicional aparte del archivo, que puede ser true o false . Cuando sea true, el archivo no será sobrescrito, sino que se añadirá el nuevo contenido.
El alias de tipo ayuda a resolver la ambigüedad cuando se trata de múltiples tipos. También significa que puedes evitar importar un espacio de nombres completo para realizar tus operaciones. Esto funciona de la misma manera que el aliasing de espacios de nombres, pero añade el alias para el ámbito del archivo en el que aparece. No permite crear alias globales que funcionen en todos los proyectos. También tienes la opción de hacer alias de tipos genéricos, pero para que esto funcione, tienes que pasar el tipo de parámetro.
He aquí un ejemplo de alias para un tipo específico:
12usando SW =System.IO.StreamWriterusing FS = System.IO.FileStreamcsharp
He aquí un ejemplo de un alias genérico para un tipo:
12utilizando NINT = System.Nullable<System.Int32;;usando UDBL = System.Nullable<System.Double;;csharp