- BestProg
- Метод Main() . Способы объявления. Передача аргументов в функцию Main() . Метод GetCommandLineArgs() класса Environment
- Содержание
- Аргументы командной строки (Руководство по программированию на C#) Command-Line Arguments (C# Programming Guide)
- Пример Example
- Передать переменную из static void Main() в public Form1()
BestProg
Метод Main() . Способы объявления. Передача аргументов в функцию Main() . Метод GetCommandLineArgs() класса Environment
Содержание
Поиск на других ресурсах:
1. Назначение метода Main() . Особенности применения
Функция Main() – это специальная функция, которая предназначена для начала выполнения любой программы и имеет следующие особенности применения:
- функция Main() есть точкой входа в любую программу на языке C#. Термин «точка входа» означает, что выполнение программы начинается из функции Main() ;
- функция Main() считается главной функцией в программе, которая может вызывать другие функции, реализованные в программе;
- функция Main() может получать параметры. С помощью этих параметров другая программа может передавать некоторую информацию (данные) в текущую программу;
- функция Main() может возвращать целочисленное значение, которое будет сигнализировать о результате выполнения программы. Это необходимо в случаях, если программа вызывается из другой программы (процесса). Чаще всего процессом, который вызывает функцию Main() есть операционная система;
- в программе функция с именем Main() может быть только одна. Иными словами, функция Main() не может быть перегружена;
- функция Main() есть статической, то есть в начале объявления содержит модификатор static . Это означает, что функция вызывается без создания экземпляра класса. Статичность функции необходима, так как при первом запуске еще не создано никаких экземпляров классов. Существуют только статические методы и переменные. Эти методы и переменные инициализируются автоматически при первом обращении к ним.
2. Способы объявления функции Main()
Функция Main() может быть объявлена одним из четырех возможных способов, перечисленных ниже.
Способ 1. Функция не возвращает значения и не получает параметров. Общая форма функции Main() в этом случае следующая:
Способ 2. Функция возвращает целочисленное значение и не получает параметров. В этом случае общая форма функции следующая
Здесь value – некоторое целочисленное значение, которое есть результатом возврата из программы. Другие процессы, запускающие текущую программу, могут использовать этот результат. Например, если функция Main() возвращает -1, то это может означать внутреннюю ошибку. И, наоборот, если функция возвращает 0, то это может означать корректное выполнение программы.
Способ 3. Функция не возвращает значения, но получает параметры. Параметрами функции Main() может быть массив строк. В этом случае общая форма функции следующая:
- args – массив строк, который передается в функцию Main() из других процессов.
Способ 4. Функция возвращает целочисленное значение и получает параметры. Общая форма объявления функции следующая
- args – массив строк, который передается в функцию Main() из других процессов;
- value – значение типа int , которое передается в процесс, который вызвал текущую программу.
3. Модификаторы доступа, которые могут применяться с функцией Main()
Функция Main() может быть объявлена с двумя модификаторами доступа:
- private – в этом случае функция Main() не может вызываться из других сборок непосредственно;
- public – функция Main() есть общедоступной из других сборок.
4. Зачем в качестве параметров в функцию Main() передается массив строк?
В качестве параметров в любую программу (функцию Main() ) вызывающий процесс (операционная система) может передать только строку символов. Если эта строка содержит слова, которые разделены символом пробел, то эта строка разбивается на массив строк.
Например. Пусть сделан вызов программы с именем Project1.exe следующим образом:
то функция Main() программы Project1.exe получит следующий массив входных параметров
то есть, для следующего объявления функции
значения переменной args будут следующими:
5. Пример, который демонстрирует применение параметров в функции Main()
В примере продемонстрирован вывод массива параметров на экран. Программа создана по шаблону Console Application.
Результат выполнения программы ConsoleApp1.exe для строки
имеет следующий вид
6. Установка параметров, которые передаются в функцию Main() , средствами Microsoft Visual Studio 2019
В системе Microsoft Visual Studio любой версии можно задавать параметры, которые передаются в функцию Main() . Эти параметры еще называются аргументы командной строки.
Чтобы задать аргументы командной строки используется команда Properties… из меню Project .
Например, если создано консольное приложение с именем решения ConsoleApp1 , то вызвать окно настройки параметров можно с помощью команды
как показано на рисунке 1.
Рисунок 1. Команда вызова свойств проекта
В результате откроется окно «ConsoleApp1» , в котором нужно активировать элемент Debug (рисунок 2). В левой части окна в поле «Application arguments» нужно ввести аргументы командной строки. Эти аргументы будут передаваться в функцию Main() . Таким образом, можно протестировать вызов текущей программы из других процессов передавая программе различные варианты аргументов.
Рисунок 2. Установка аргументов командной строки
7. Каким образом в функцию Main() передать строку, которая содержит пробелы?
Бывают случаи, когда в функцию Main() нужно передать строку как один параметр. Но эта строка может содержать пробелы. В этом случае строку нужно заключить в двойные кавычки. Все что размещается между двойными кавычками не разбивается по параметрам.
Например. Пусть в функцию Main() для приложения с именем ConsoleApp1.exe нужно передать два параметра-строки:
- «This is a parameter»;
- «Second parameter».
В этом случае, вызов ConsoleApp1.exe из другого процесса (например, из командной строки) будет следующим:
В этом случае в функцию Main() будут переданы следующие значения массива args :
8. Получение параметров с помощью метода GetCommandLineArgs() класса Environment . Пример
Получить параметры командной строки можно с помощью метода GetCommandLineArgs() класса Environment . Этот метод есть статическим, а потому не нужно создавать экземпляр класса Environment . Метод возвращает массив аргументов типа string[] .
Важно помнить, что метод GetCommandLineArgs() возвращает массив параметров на один больше. Первым параметром, который возвращает метод (под индексом 0) идет полное имя к текущему выполняемому файлу.
Пример. Вывод на экран списка параметров, передаваемых в функцию Main() .
9. Определение полного имени файла выполняемой программы
Полное имя файла выполняемой программы можно определить с помощью статического метода GetCommandLineArgs() класса Environment. Как известно, метод используется для определения параметров текущей программы в виде массива строк типа string[] . При вызове метода, параметр, который возвращается, с индексом 0 содержит полное имя файла текущей программы.
Нижеследующий фрагмент кода демонстрирует вывод полного имени файла текущей программы
Аргументы командной строки (Руководство по программированию на C#) Command-Line Arguments (C# Programming Guide)
Вы можете передавать аргументы в метод Main , определив метод одним из следующих способов: You can send arguments to the Main method by defining the method in one of the following ways:
Код метода Main Main method code | Сигнатура Main Main signature |
---|---|
Без возвращаемого значения, без использования await No return value, no use of await | static void Main(string[] args) |
С возвращаемым значением, без использования await Return value, no use of await | static int Main(string[] args) |
Без возвращаемого значения, с использованием await No return value, uses await | static async Task Main(string[] args) |
С возвращаемым значением, с использованием await Return value, uses await | static async Task Main(string[] args) |
Если аргументы не используются, можно опустить args в сигнатуре метода, чтобы немного упростить код: If the arguments are not used, you can omit args from the method signature for slightly simpler code:
Код метода Main Main method code | Сигнатура Main Main signature |
---|---|
Без возвращаемого значения, без использования await No return value, no use of await | static void Main() |
С возвращаемым значением, без использования await Return value, no use of await | static int Main() |
Без возвращаемого значения, с использованием await No return value, uses await | static async Task Main() |
С возвращаемым значением, с использованием await Return value, uses await | static async Task Main() |
Чтобы включить аргументы командной строки в методе Main в приложении Windows Forms, необходимо вручную изменить сигнатуру Main в файле program.cs. To enable command-line arguments in the Main method in a Windows Forms application, you must manually modify the signature of Main in program.cs. Код, созданный с помощью конструктора Windows Forms, создает Main без входного параметра. The code generated by the Windows Forms designer creates a Main without an input parameter. Также можно использовать Environment.CommandLine или Environment.GetCommandLineArgs для доступа к аргументам командной строки из любой точки в консоли или приложении Windows. You can also use Environment.CommandLine or Environment.GetCommandLineArgs to access the command-line arguments from any point in a console or Windows application.
Параметр метода Main — это массив String, представляющий аргументы командной строки. The parameter of the Main method is a String array that represents the command-line arguments. Как правило, определить, существуют ли аргументы, можно, проверив свойство Length , например: Usually you determine whether arguments exist by testing the Length property, for example:
Массив args не может иметь значение NULL. The args array cannot be null. Поэтому доступ к свойству Length можно получить без проверки значения NULL. So, it’s safe to access the Length property without null checking.
Строковые аргументы также можно преобразовать в числовые типы с помощью класса Convert или метода Parse . You can also convert the string arguments to numeric types by using the Convert class or the Parse method. Например, следующая инструкция преобразует string в число long с помощью метода Parse: For example, the following statement converts the string to a long number by using the Parse method:
Можно также использовать тип C# long , который является псевдонимом Int64 : It is also possible to use the C# type long , which aliases Int64 :
Кроме того, можно использовать метод класса Convert , ToInt64 : You can also use the Convert class method ToInt64 to do the same thing:
Дополнительные сведения см. в разделах Parse и Convert. For more information, see Parse and Convert.
Пример Example
В следующем примере показано использование аргументов командной строки в консольном приложении. The following example shows how to use command-line arguments in a console application. Приложение принимает один аргумент времени выполнения, преобразует аргумент в целое число и вычисляет факториал числа. The application takes one argument at run time, converts the argument to an integer, and calculates the factorial of the number. Если не указано никаких аргументов, приложение выдает сообщение, поясняющее правильное использование программы. If no arguments are supplied, the application issues a message that explains the correct usage of the program.
Чтобы скомпилировать и запустить приложение из командной строки, выполните следующие действия. To compile and run the application from a command prompt, follow these steps:
Вставьте следующий код в любой текстовый редактор и сохраните файл как текстовый файл с именем Factorial.cs. Paste the following code into any text editor, and then save the file as a text file with the name Factorial.cs.
На начальном экране или в меню Пуск откройте окно командной строки разработчика Visual Studio и перейдите к папке, содержащей файл, который вы только что создали. From the Start screen or Start menu, open a Visual Studio Developer Command Prompt window, and then navigate to the folder that contains the file that you just created.
Введите следующую команду для компиляции приложения. Enter the following command to compile the application.
Если для приложения не выдаются ошибки компиляции, создается исполняемый файл с именем Factorial.exe. If your application has no compilation errors, an executable file that’s named Factorial.exe is created.
Введите приведенную ниже команду для вычисления факториала числа 3: Enter the following command to calculate the factorial of 3:
Код создает следующие выходные данные: The factorial of 3 is 6. The command produces this output: The factorial of 3 is 6.
При выполнении приложения в Visual Studio аргументы командной строки можно указать на странице «Отладка» в конструкторе проектов. When running an application in Visual Studio, you can specify command-line arguments in the Debug Page, Project Designer.
Передать переменную из static void Main() в public Form1()
Люди похожая ситуация, только переменную надо передать не из формы в форму а из static void Main() в
public Form1(). Пожалуйста помогите пытаюсь это решить уже несколько дней и результата пока нет.
Очень на вас надеюсь.
Комментарий модератора | ||
|
Public static void main(String . args)
сабж. Почему компилируется без ошибок, что означают 3 точки вместо массива?
Не видит переменную за пределами public static void
Внутри public static void создал переменную для cnn подключения к базе данных. Подключение.
Компилятор ругается, что не хватате public static void main(String Args[])
Добрый день,всё время писал в обычном notepade и как такавых проблем с компиляцией не возникало т.к.
Public static void main(String args[]) c «;» и без
Учу Java по Шилдту. В общем как и все «зеленые» компилирую через cmd (с помощью bat файла потому.
Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.
Что делать с «public static void main(String[] args)»?
Здравствуйте!Чет я не догоняю.Я только начал читать про Java.Используя NetBeans IDE 7.0.И вот что я.
static void Main(string[] args)
Что такое string args в строке static void Main(string args) и зачем это писать, если void.
Почему метод static void Main дает ошибку?
почему метод static void Main дает ошибку? 🙁 помогите class Program < .