2011-05-27 32 views
12

Esto sería una pregunta de C# beginner. Cuando creo una aplicación de consola, obtengo el método Main con el parámetro args como cadena de matriz. No entiendo cómo el sistema llama este método y cómo se pasan los argumentos al método Principal. ¿Tal vez alguien podría explicar? ¿El método principal está anulado de algún tipo de clase de consola?Argumentos de la aplicación de consola, cómo se pasan los argumentos al método principal

namespace ConsoleApplication1 
{ 
    class Program 
    {  
     static void Main(string[] args) 
     {  
     } 
    } 
} 

Respuesta

18

El método principal es el punto de entrada de su aplicación. Si usted paga a través de ildasm continuación

.method private hidebysig static void Main(string[] args) cil managed 
{ 
    .entrypoint 

Esto es lo que ayuda en una llamada al método

se pasan los argumentos como decir C:\AppName arg1 arg2 arg3

0

El método principal del motor en tiempo de ejecución se ve algo así como int main(int argc, char *argv[]), donde argc es un recuento de la cantidad de argumentos y argv es una matriz de punteros para cada uno. El motor de tiempo de ejecución convierte esto en una forma que es más natural para C#.

Antes de que se llame al método principal, todo está en lenguaje ensamblador. Tiene acceso a los argumentos de la línea de comando (porque el sistema operativo lo hace disponible para cada proceso que se inicia), pero ese lenguaje ensamblador necesita convertir una sola cadena de la línea de comando completa en múltiples subcadenas (usando espacios en blanco para separarlas) antes de que sea listo para pasarlos a main().

6

El tiempo de ejecución se divide los argumentos dados en la consola en cada espacio.

Si llama

myApp.exe arg1 arg2 arg3 

el principal método obtiene una serie de argumentos de la línea

var args = new string[] {"arg1","arg2","arg3"} 
1

comando es una manera de pasar los argumentos en. This muestra de MSDN vale la pena ver. También vale la pena leer el MSDN Page para los argumentos de línea de comando.

Desde dentro de Visual Studio se pueden establecer los argumentos de línea de comando eligiendo las propiedades de la aplicación de consola y luego seleccionando la ficha Depurar

+0

que era la respuesta que estaba buscando, cómo pasar parámetros a la depuración método Main en VS. – RobertoFRey

1

Cada logró exe tiene un punto de una entrada que se puede ver cuando si se carga el código a ILDASM. El punto de entrada se especifica en el CLR dirigido y se vería algo así.

enter image description here

1

Leer MSDN.

también contiene un enlace a los argumentos.

respuesta corta: no, la principal no se anula. cuando Visual Studio (en realidad el compilador) construye su exe debe declarar un punto de partida para el assmebly, ese punto es la función principal.

si se refería a cómo pasar literary args entonces puede ejecutar su aplicación desde la línea de comandos con ellos (por ejemplo, appname.exe param1 param2) o en la configuración del proyecto, ingréselos (en los argumentos de la línea de comando la ficha Depurar)

en el principal tendrá que leer esos argumentos por ejemplo:

for (int i = 0; i < args.Length; i++) 
{ 
    string flag = args.GetValue(i).ToString(); 
    if (flag == "bla") 
    { 
     Bla(); 
    } 
} 
8

¿Cómo se llama principal?

Cuando se utiliza la plantilla de aplicación de consola, el código se compila requiere un método llamado Main en el objeto de inicio como principal es el mercado como punto de entrada a la aplicación.

De manera predeterminada, ningún objeto de inicio se especifica en la configuración de propiedad del proyecto y la clase de Programa se utilizará de manera predeterminada. Puede cambiar esto en la propiedad del proyecto en la pestaña "Crear" si lo desea.

Tenga en cuenta que el objeto que asigne como objeto de inicio debe tener un método denominado Principal.

Cómo se pasan argumentos de método principal

El formato aceptado es MyConsoleApp.exe value01 value02 etc ...

La aplicación asigna cada valor después de cada espacio en un elemento separado de la matriz de parámetros.

Por lo tanto, MyConsoleApp.exe value01 value02 significará sus argumentos parametro tiene 2 elementos:

[0] = "value01" 

[1] = "value02" 

La forma de analizar los valores de entrada y utilizarlos depende de usted.

Espero que esto haya ayudado.

Lectura adicional:

Creating Console Applications (Visual C#)

Command-Line Arguments (C# Programming Guide)

0

puede pasar también al hacer la función y luego en esta función se llama método principal y pasa argumento principal método

static int Main(string[] args) 
    { 


     foreach (string b in args) 
      Console.WriteLine(b+" "); 

     Console.ReadKey(); 
     aa(); 
     return 0; 

    } 
    public static void aa() 
    { 
     string []aaa={"Adil"}; 

     Console.WriteLine(Main(aaa)); 
    } 
2

en Visual Studio también puedes hacer eso para pasar simplemente o evitar el argumento de comandline

static void Main(string[] args) 
    { 
     if (args == null) 
     { 
      Console.WriteLine("args is null"); // Check for null array 
     } 
     else 
     { 
      args=new string[2]; 
      args[0] = "welcome in"; 
      args[1] = "www.overflow.com"; 
      Console.Write("args length is "); 
      Console.WriteLine(args.Length); // Write array length 
      for (int i = 0; i < args.Length; i++) // Loop through array 
      { 
       string argument = args[i]; 
       Console.Write("args index "); 
       Console.Write(i); // Write index 
       Console.Write(" is ["); 
       Console.Write(argument); // Write string 
       Console.WriteLine("]"); 
      } 
     } 
24

Todas las respuestas son impresionantes y explicó todo muy bien

pero sólo quiero señalar differant way for passing args al método principal

en Visual Studio

  1. right click on project a continuación, elija Properties
  2. vaya a debug tab y luego en la sección start options proporcione el aplicación con sus argumentos

como esta imagen

Properties window

y secretos sabiendo felices

Cuestiones relacionadas