Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Рассмотрение простейшей программы

Начнем с традиционного способа — компиляции и запуска простейшей программы на С# — простого консольного приложения, содержащего класс, который выводит сообщение на экран.

using System;using System.Collections.Generic;using System.Linq;using System.Text; namespace ConsoleApplication1{ class Program { static void Main(string[] args) { Console.WriteLine("Hello world!"); Console.ReadLine(); } }}

Первые строки в предыдущем примере кода имеют отношение к пространствам имен, которые представляют способ группирования ассоциированных классов. С помощью ключевого слова namespace объявляется пространство имен, с которым должен быть ассоциирован класс. Весь код в последующих фигурных скобках рассматривается как принадлежащий этому пространству имен. Оператор using специфицирует пространство имен, которое должен просматривать компилятор в поисках классов, упомянутых в коде, но не определенных в текущем пространстве имен. Это служит тем же целям, что оператор import в Java и using namespace в C++.

Причина присутствия оператора using в файле Program.cs связана с использованием библиотечного класса System.Console. Оператор using System; позволяет обратиться к этому классу просто по имени Console (а также к любому другому классу из пространства имен System). Без using пришлось бы полностью уточнить вызов метода Console.WriteLine следующим образом: System.Console.WriteLine ("Hello world!");

В стандартном пространстве имен System находятся наиболее часто используемые типы.NET. Важно уяснить, что все, что вы делаете в С#, зависит от базовых классов.NET; в данном случае вы используете класс Console из пространства имен System для того, чтобы вывести информацию в окно консоли. Следует отметить, что С# не имеет собственных встроенных ключевых слов для ввода или вывода '; в этом он полностью полагается на классы.NET

Далее объявляется класс по имени Program. Однако, поскольку он помещен впространство имен ConsoleApplication1, его полностью уточненное имя выглядит как ConsoleApplication1.Program.

Весь код С# должен содержаться внутри класса. Объявление класса состоит из ключевого слова class, за которым следует имя класса и пара фигурных скобок. Весь код, ассоциированный с этим классом, размещается между этими скобками. Далее мы объявляем метод Main (). Каждая исполняемая программа С# (такая как консольное приложение, приложение Windows или служба Windows) должна иметь точку входа — метод Main () (обратите внимание на заглавную букву "М"):

static void Main(string[] args)

Этот метод вызывается при запуске программы. Он должен либо ничего не возвращать (void), либо возвращать целочисленное значение (int). Обратите внимание на формат определения метода в С#:

[модификаторы] тип_возврата ИмяМетода([параметры]){// Тело метода. Этот блок представлен псевдокодом.}

Здесь в первых квадратных скобках представлены необязательные ключевые слова. Модификаторы используются для спецификации определенных свойств определяемого вами метода, таких как, например, откуда этот метод может быть вызван. В данном случае указаны модификаторы public и static. Модификатор public означает, что метод может быть доступен отовсюду, а потому может быть вызван извне класса. Модификатор static означает, что метод не работает с определенным экземпляром класса, а потому может быть вызван без предварительного создания экземпляра класса. Это важно, поскольку мы создаем исполняемую программу, а не библиотеку классов. В качестве типа возврата устанавливается void, ив данном примере никакие параметры не используются.

Метод Main ()

Вы уже видели в начале этой главы, что программы на С# начинают выполняться с метода по имени Main (). Это должен быть статический метод класса (или структуры), возвращающий либо значение типа int, либо void. Хотя нередко модификатор public указывается явно, поскольку по определению этот метод должен быть вызван извне программы, на самом деле неважно, какой уровень доступа вы назначите методу точки входа. Он запустится, даже если вы пометите его как private.

Множественные методы Main ()

Когда компилируется консольное или Windows-приложение С#, по умолчанию компилятор ищет в точности один метод Main () с описанной выше сигнатурой в любом классе и делает его точкой входа программы. Если существует более одного метода Main (), компилятор возвращает сообщение об ошибке. Тем не менее, можно явно указать компилятору, какой из этих двух методов должен использоваться в качестве точки входа программы, задав опцию /main вместе с полным именем (включая пространства имен) класса, к которому относится метод Main ():

Передача аргументов в Main ()

Все рассмотренные до сих пор примеры включали только метод Main () без параметров. Тем не менее, при вызове программы можно заставить CLR передать программе любые аргументы командной строки, включив параметр. Этот параметр представляет собой массив строк, традиционно именуемый args (хотя в С# допускается любое имя). Программа может использовать этот массив для доступа к любым опциям, переданным ей при запуске через командную строку.

Следующий пример, ArgsExample.cs, выполняет цикл по всему массиву строк,

переданному методу Main (), и выводит значение каждой опции в окно консоли:

using System;namespace Wrox{class ArgsExamplepublic static int Main(string[] args){for (int i = 0; l < args.Length; i++){Console.WriteLine(args[l]);}return 0;

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

ArgsExample /a /b /с/а/Ь/с

Классы и объекты

Классы — это, по сути, шаблоны, по которым можно создавать объекты. Каждый объект содержит данные и методы, манипулирующие этими данными. Класс определяет, какие данные и функциональность может иметь каждый конкретный объект (называемый экземпляром) этого класса. Например, если имеется класс, представляющий заказчика, он может определять такие поля, как CustomerlD, FirstName, LastName и Address, которые нужны ему для хранения информации о конкретном заказчике. Он также может определять функциональность, которая работает с данными, хранящимися в этих полях. Вы создаете экземпляр этого класса для представления конкретного заказчика, устанавливаете значения полей экземпляра и используете его функциональность.

class PhoneCustomer { public const string DayOfSendingBill = "Monday"; public int CustomerlD; public string FirstName; public string LastName; }

Структуры отличаются от классов тем, как они сохраняются в памяти и как к ним осуществляется доступ (классы — это ссылочные типы, размещаемые в куче, структуры — типы значений, размещаемые в стеке), а также некоторыми свойствами (например, структуры не поддерживают наследование). Из соображений производительности вы будете использовать структуры для небольших типов данных. Однако в отношении синтаксиса структуры очень похожи на классы. Главное отличие состоит в том, что при их объявлении используется ключевое слово struct вместо class. Например, если вы хотите, чтобы все экземпляры PhoneCustomer размещались в стеке, а не в управляемой куче, то можете написать следующий код:

struct PhoneCustomerStruct{public const string DayOfSendingBill = "Monday";public int CustomerlD;public string FirstName;public string LastName;}

При создании как классов, так и структур используется ключевое слово new для объявления экземпляра. В результате объект создается и инициализируется. В следующем примере по умолчанию все поля обнуляются:

PhoneCustomer myCustomer = new PhoneCustomer(); // работает с классомPhoneCustomerStruct myCustomer2 = new PhoneCustomerStruct(); // работает//со структурой

В большинстве случаев классы используются чаще структур. По этой причине в главе сначала рассматриваются классы, а затем обсуждается разница между классами и структурами и специфические причины выбора структур вместо классов. Если только не указано обратное, вы можете рассчитывать на то, что код, работающий с классом, будет также работать со структурой.

Классы

Данные и функции, объявленные внутри класса, известны как члены класса. В официальной терминологии Microsoft делается различие между данными-членами и функциями-членами. В дополнение к членам, классы могут содержать в себе вложенные типы (такие как другие классы). Доступность членов класса может быть описана как public, protected, internal protected, private или internal.

<== предыдущая лекция | следующая лекция ==>
Службы Windows | Данные-члены
Поделиться с друзьями:


Дата добавления: 2014-01-04; Просмотров: 369; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.01 сек.