Bienvenidos sean a este post, en el post anterior al crear nuestra aplicacion con Visual Studio cuando se genero el codigo en el bloque de Main se nos agrego una variable llamada args.
En realidad esta variable existe en todos los lenguajes de tipo C, en algunos casos puede tener dos variables pero en general como minimo existe una, la cual se encarga de recibir todo lo que pongamos como argumento por detras del programa en la linea de comandos.
En general se tiende a usar el nombre de args para identificarlo pero puede tener cualquier nombre, esta variable es de tipo array y a su vez string (cadena), lo cual nos permite almacenar cualquier dato y la cantidad que sea necesaria , para estudiar el caso de hoy crearemos una nueva aplicacion, para ello deben seleccionar la opcion crear un proyecto:
- Lenguaje: C#
- Plataforma: Windows (Net Core)
- Tipo de Proyecto: Consola
- Nombre Proyecto: Argumentos
- Nombre Solucion: Argumentos
Una vez creada nuestra solucion, procederemos a ver nuestro codigo generado automaticamente:
Program.cs
using System;
namespace Argumentos
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello World!");
}
}
}
Como pueden observar siempre se nos va a generar este codigo de manera predeterminada, si elelgimos como plataforma Net Core, por este motivo vamos a modificarlo de la siguiente manera:
using System;
namespace Argumentos
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Argumento: " + args[0]);
}
}
}
En este caso modificamos la linea de mostrar el mensaje de Hello World por la siguiente linea:
Console.WriteLine("Argumento: " + args[0]);
La cual se encargara de mostrarnos el primer argumento despues del ejecutable, en el caso de C# los argumentos comienzan desde cero pero en otros lenguajes, por ejemplo en C++ el argumento cero es el nombre del programa asi que para ver los argumentos deberian comenzar desde uno, con esto establecido podemos probar nuestra solucion, para ello en lugar de ejecutarlo como vimos anteriormente iremos a Compilar -> Compilar Solucion, con esto no ejecutaremos el programa generado sino simplemente lo crearemos, de la misma forma que hicimos con csc.exe anteriormente, para ver donde se creo nuestro programa debemos ir a la ventana de salida y ver donde se compilo, puede aparecer nuestro programa con la extension .dll pero no se preocupen porque al lado esta el .exe, veamos en mi caso:

En este caso la carpeta donde esta nuestro programa es todo el path hasta antes del archivo .dll, en mi caso es asi:
C:\Users\tinchicus\Source\Repos\Argumentos\Argumentos\bin\Debug\netcoreapp3.1\
Para nuestro siguiente paso deberan abrir un cmd e ir hasta esa carpeta, sera algo asi:

En la primer linea desde la raiz del disco rigido usan cd y luego ponen el path que obtuvieron antes pero sin el c: luego con la barra y todo hasta el final, dan Enter y deberia llevarlos hasta su destino, ahora vamos a probar nuestra aplicacion, primero lo ejecutaremos solamente:
C:\Users\tinchicus\source\repos\Argumentos\Argumentos\bin\Debug\netcoreapp3.1>Argumentos.exe
Unhandled exception. System.IndexOutOfRangeException: Index was outside the bounds of the array.
at Argumentos.Program.Main(String[] args) in C:\Users\tinchicus\source\repos\Argumentos\Argumentos\Program.cs:line 8
C:\Users\tinchicus\source\repos\Argumentos\Argumentos\bin\Debug\netcoreapp3.1>
Como pueden ver al no pasar ningun argumento nos devolvio un error pero ahora vamos a probarlo con un argumento:
C:\Users\tinchicus\Source\Repos\Argumentos\Argumentos\bin\Debug\netcoreapp3.1> argumentos prueba
Argumento: prueba
C:\Users\tinchicus\Source\Repos\Argumentos\Argumentos\bin\Debug\netcoreapp3.1>
Como pueden ver ahora funciono perfecto, no nos devolvio ningun error y nos trajo el argumento en si pero y si tengo mas de un argumento? Veamos el siguiente ejemplo:
C:\Users\tinchicus\Source\Repos\Argumentos\Argumentos\bin\Debug\netcoreapp3.1>argumentos prueba total de fabrica
Argumento: prueba
C:\Users\tinchicus\Source\Repos\Argumentos\Argumentos\bin\Debug\netcoreapp3.1>
En este caso volvio a fallar pero no por un error sino porque nos ignoro el resto de los argumentos que pasamos, para solucionar esto vamos a ver dos funciones de las cuales ya hemos hablados y para ello modificaremos nuestro codigo de la siguiente manera:
static void Main(string[] args)
{
for(int i=0; i<args.Length; i++)
{
Console.WriteLine("Argumento["+ i + "]: " + args[i]);
}
}
En este caso les traigo solo el Main donde agregamos un for en conjuncion con la propiedad Length para el array args donde dira cual es el total de elementos en este array, estableciendo con esto el limite del for, luego lo modificamos para que nos muestre la posicion del elemento en args y el valor de esa posicion, volvemos a hacer Compilar->Compilar solucion, volvemos a nuestro cmd y si ejecutamos la ultima accion nuevamente veremos lo siguiente:
C:\Users\tinchicus\Source\Repos\Argumentos\Argumentos\bin\Debug\netcoreapp3.1>argumentos prueba total de fabrica
Argumento[0]: prueba
Argumento[1]: total
Argumento[2]: de
Argumento[3]: fabrica C:\Users\tinchicus\Source\Repos\Argumentos\Argumentos\bin\Debug\netcoreapp3.1>
Sorpresa! Ahora si nos trajo todos los elementos del array, para las personas que estan familiarizadas con programar puede resultar un juego de niños para los que recien empiezan les puede resultar un poco mas complejo pero si vinieron de los posts anteriores se daran cuenta que mucho de lo ya visto se ira repitiendo de distintas formas, por ultimo veamos el siguiente video con lo realizado
Una ventaja de Visual Studio es que nos permite emular el envio de datos a args por medio de las propiedades del proyecto, para ello van al Explorador de Soluciones, busquen el proyecto, hacen click con el boton derecho y seleccionen Propiedades, esto hara aparecer la ventana de Propiedades.

En este caso debemos ir a la opcion de Depurar y se nos abriran multiples opciones, pero nosotros debemos centrarnos en Opciones de Inicio -> Argumentos de la linea de comandos, en ese cuadro debemos poner todos los parametros que deseamos probar.
Vamos a ver el siguiente video donde haremos todos los pasos para verificarlo
En el video podemos como se utiliza para el momento de la depuracion, especialmente antes de compilarlo, si bien al momento de compilarlo y usar el ejecutable no funciona si nos es util para la verificacion del mismo.
En resumen, hoy hemos visto como trabajar con argumentos para la linea de comandos, como los toma, como los procesa, hemos visto como procesar varios argumentos, un repaso a los ciclos en el lenguaje y como obtener el valor de todos los elementos en un array, espero les haya sido util sigueme en tumblr, Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.
Tengo un Patreon donde podes acceder de manera exclusiva a material para este blog antes de ser publicado, sigue los pasos del link para saber como.

Tambien podes donar
Es para mantenimiento del sitio, gracias!
1.00 $