Подтвердить что ты не робот

Консольные аргументы приложения, как аргументы передаются в метод Main

Это будет вопрос от начинающего С#. Когда я создаю консольное приложение, я получаю главный метод с параметром args как строка массива. Я не понимаю, как этот метод вызывается системой и как args передаются методу Main. Может, кто-нибудь может объяснить? Является ли метод Main переопределен для какого-либо класса консоли?

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

Ответ 1

Основной метод - это точка входа вашего приложения. Если вы заказываете через ildasm, то

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

Это то, что помогает при вызове метода

Аргументы передаются как say C:\AppName arg1 arg2 arg3

Ответ 2

Все ответы потрясающие и все очень хорошо объяснили

но я просто хочу указать другой способ передачи аргументов методу main

в визуальной студии

  1. щелкните правой кнопкой мыши на Project и выберите Свойства
  2. .перейдите на вкладку "Отладка", а затем в разделе " Параметры запуска " предоставьте приложению свои аргументы

нравится это изображение

Properties window

и счастлив, зная секреты

Ответ 3

Время выполнения разделяет аргументы, заданные на консоли в каждом пространстве.

Если вы вызываете

myApp.exe arg1 arg2 arg3

Основной метод получает массив

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

Ответ 4

Как называется главный?

Когда вы используете шаблон консольного приложения, код будет скомпилирован, требуя метод Main в объекте запуска, поскольку Main является рынком как точка входа в приложение.

По умолчанию в настройках проекта не указан объект запуска, и по умолчанию будет использоваться класс программы. Вы можете изменить это в свойстве проекта на вкладке "Создать", если хотите.

Имейте в виду, что когда-либо объект, который вы назначаете для запуска, должен иметь в нем метод с именем Main.

Как передаются аргументы основному методу

Принятый формат - значение MyConsoleApp.exe value02 и т.д....

Приложение назначает каждое значение после каждого пространства в отдельный элемент массива параметров.

Таким образом, значение MyConsoleApp.exe value01 value02 будет означать, что ваш параметр args имеет 2 элемента:

[0] = "value01"

[1] = "value02"

Как вы анализируете входные значения и используете их для вас.

Надеюсь, что это помогло.

Дополнительное чтение:

Создание консольных приложений (Visual С#)

Аргументы командной строки (Руководство по программированию на С#)

Ответ 5

в visual studio вы также можете сделать так, чтобы просто или избегать аргумента 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("]");
            }
        }

Ответ 6

Аргументы могут быть переданы через командную строку, а также не может быть никаких аргументов.

Ответ 7

Аргументы командной строки - один из способов передать аргументы. Этот пример msdn стоит проверить. Страница MSDN для аргументов командной строки также стоит прочитать.

Из визуальной студии вы можете установить аргументы командной строки, выбрав свойства своего консольного приложения, затем выбрав вкладку "Отладка"

Ответ 8

Каждый управляемый exe имеет точку входа, которая может быть видна, если вы загружаете свой код в ILDASM. Точка входа указана в заголовке CLR и будет выглядеть примерно так.

enter image description here

Ответ 9

Прочитайте MSDN.

он также содержит ссылку на args.

короткий ответ: нет, главное не отменяет. когда визуальная студия (на самом деле компилятор) строит ваш exe, она должна объявить отправную точку для assmebly, эта точка является основной функцией.

если вы имели в виду, как использовать литературные pass args, то вы можете либо запустить приложение из командной строки с ними (например, appname.exe param1 param2), либо в настройке проекта, ввести их (в аргументах командной строки в Вкладка "Отладка" )

в основном вам нужно будет прочитать эти аргументы, например:

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

Ответ 10

Основной метод механизма выполнения выглядит примерно так: int main(int argc, char *argv[]), где argc - количество аргументов, а argv - массив указателей на каждый. Механизм выполнения преобразует его в форму, более естественную для С#.

До вызова основного метода все происходит на языке ассемблера. Он имеет доступ к аргументам командной строки (потому что операционная система делает это доступным для каждого запускаемого процесса), но на этом языке ассемблера необходимо преобразовать одну строку из полной командной строки в несколько подстрок (используя пробел для их разделения) готовы передать их в main().

Ответ 11

вы также можете передать функцию, а затем в этой функции вы вызываете основной метод и передаете аргумент основному методу

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));
    }