|
Программирование >> Программирование с использованием ajax
static void Main() static void Main(string[] args) static int Main () static int Main(string [ ] args) В третьей и четвертой версии она возвращает значение int, которое может использоваться для уведомления о том, как завершается работа приложения, и зачастую применяется как признак ошибки (разумеется, это не является обязательным). Как правило, возврат значения О свидетельствует о нормальном завершении работы приложения (т.е. приложение закончило выполнение своих задач и может быть безопасно завершено). Необязательный параметр args в функции Main () дает возможность передавать в приложение информацию извне во время выполнения. Эта информация задается в виде параметров командной строки. Вам уже наверняка доводилось встречаться с параметрами командной строки. При запуске приложения из командной строки информацию, вроде того, какой файл требуется загрузить на время работы приложения, часто можно задавать напрямую. Например, возьмем доступное в Windows приложение Notepad. Это приложение можно запустить путем ввода Notepad в окне командной строки или в окне, которое появляется при выборе в меню Start (Пуск) пункта Run (Выполнить). Вместо Notepad в этих окнах можно также ввести и что-то вроде Notepad myfile.txt . Тогда приложение Notepad при запуске либо сразу же загрузит файл по имени myfile.txt, либо предложит создать файл с таким именем, если он не существует. В данном случае myf ile. txt является аргументом командной строки. Именно такое поведение и позволяет обеспечивать в консольных приложениях параметр args. При выполнении консольного приложения все заданные параметры командной строки помещаются в массив args. После этого их можно использовать в приложении. В следующем практическом занятии демонстрируются соответствующий пример. Аргументы командной строки можно задавать в любом количестве, каждый из них все равно будет выводиться в окне консоли. Двактнческое занятма Аргументы командной строки 1. Создайте новое консольное приложение по имени Ch06Ex04 и сохраните его в каталоге С: \BegVCSharp\Chapter06. 2. Добавьте в файл Program.cs следующий код: class Program { static void Main(string[] args) { Console.WriteLine( {0} conmand line arguments were specified: , args.Length) ; Вывод аргументов командной строки foreach (string arg in args) Console.WriteLine(arg); Console.ReadKey(); 3. Откройте окно со страницами свойств проекта (щелкнув правой кнопкой мыши на имени проекта Ch06Ex04 в окне Solution Explorer (Проводник решений) и выбрав в контекстном меню пункт Properties (Свойства)). 4. Отобразите страницу Debug (Отладка) и добавьте в поле Command Line Arguments (Аргументы командной строки) любые необходимые аргументы командной строки, например, так, как показано на рис. 6.7. AppllC bOn Bu4d Buld Evtnb Rf lourctj ettngi Pefrrente P th Signing Secuiit> PubliJh , fgumf r,t 2Ь6 myf tie txt e long r гдишюГ Worting <l <toiy У; Eniblt Oie Vituai Studio hotting procoi Рш. 6.7. Добавление аргументов командной строки 5. Запустите приложение. На рис. 6.8 показан результат, который должен получиться. Рис. 6.8. Приложение Ch О 6Ех О 4 в действии Описание полученных результатов Приведенный здесь код является очень простым: Console.WriteLine( {О} command line arguments were specified: , args.Length) ; foreach (string arg in args) Console.WriteLine(arg); Параметр args просто используется тем же образом, каким применялся бы любой другой строковый массив. Никаких сложных действий над аргументами не выполняется; все они просто выводятся на экран. В данном случае вы предоставляли эти аргументы через свойства проекта в IDE. Такой подход является удобным способом использовать одинаковые аргументы командной строки при каждом запуске приложения из IDE вместо того, чтобы каждый раз заново вводить их в командной строке. Точно такого же результата можно добиться и открыв окно командной строки в том же каталоге, что и выходные данные проекта (а именно - C:\BegCSharp\Chapter6\ Ch06Ex04\Ch06Ex04\bin\Debug), и набрав следующую команду: Ch06Ex04 256 myFile.txt а longer argument Все аргументы отделяются друг от друга пробелами. Предоставить аргумент, содержащий пробелы, можно, заключив его в двойные кавычки, которые не позволят воспринимать его как несколько аргументов. Использование функций в структурах В предыдущей главе описывались различные типы структур, которые позволяют хранить множество элементов данных в одном месте. На самом деле структуры способны на гораздо большее. Например, они могут содержать не только данные, но и функции. Это их свойство на первый взгляд может показаться немного странным, но в действительности является очень полезным. В качестве простого примера рассмотрим следующую структуру: struct customerName { public string firstName, lastName; При наличии переменных типа customerName и желании вывести в окно консоли полное имя, это имя придется собирать из отдельных частей. Для переменной типа CustomerName по имени myCustomer можно воспользоваться, например, таким синтаксисом: customerName myCustomer; myCustomer.firstName = John ; myCustomer.lastName = Franklin ; Console.WriteLine( {0} {1} , myCustomer.firstName, myCustomer.lastName); Добавив в структуру соответствующие функции, код можно упростить и централизовать решение общих задач. В частности, добавить подходящую функцию в структуру можно следующим образом: struct customerName { public string firstName, lastName; public string Name () return firstName + + lastName; Эта функция выглядит во многом так же, как и любая другая показанная в этой главе функция; единственное отличием состоит в том, что в ней не применяется модификатор static. Причины будут объясняться позже в книге; пока что вполне достаточно знать то, что для функций в структурах использовать данное ключевое слово не требуется. Применить эту функцию можно следующим образом: customerName myCustomer; myCustomer.firstName = John ; myCustomer.lastName = Franklin ; Console.WriteLine(myCustomer.Name()); Такой синтаксис и гораздо проще, и понятнее предьщущего. Здесь важно обратить внимание на то, что у функции Name () имеется прямой доступ к таким членам структуры, как firstName и lastName. В рамках структуры customerName они могут считаться глобальными. Перегрузка функций Ранее в этой главе уже показывалось, как соблюдать соответствие с сигнатурой функции при ее вызове. Это означает, что для выполнения операций над разными типами переменных необходимо иметь отдельные функции.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |