Pragma warning 7 страница
В данной главе описываются важнейшие функциональные возможности языка C#. В последующих главах правила и исключения описываются более детально и зачастую с математическими подробностями. Однако в этой главе акцент сделан на четкости и сжатости, а не на полноте изложения. Основная цель данной главы — предоставить вводную информацию о языке, которая будет полезна при написании простых программ, а также при чтении последующих глав. 1.1 Программа «Hello world» Программа «Hello, World» традиционно используется для знакомства с языком программирования. Ниже приведен пример этой программы на языке C#: using System; class Hello Исходные файлы C# обычно имеют расширение cs. Если программа «Hello, World» сохранена в файле hello.cs, то чтобы скомпилировать ее с помощью компилятора Microsoft C#, введите следующую команду в командной строке: csc hello.cs В результате компиляции будет создан исполняемый файл сборки hello.exe. В результате выполнения этого приложения получаются следующие выходные данные: Привет! Программа «Hello, World» начинается с директивы using, которая ссылается на пространство имен System. Пространства имен используются для иерархического упорядочения программ и библиотек C#. Пространства имен могут содержать типы и другие пространства имен. Например, пространство имен System содержит набор типов (например, используемый в программе класс Console), а также ряд других пространств имен (например, IO и Collections). Директива using ссылается на заданное пространство имен и обеспечивает безусловное использование типов, являющихся его членами. Благодаря применению директивы using в программе можно использовать сокращенную форму записи Console.WriteLine вместо System.Console.WriteLine. Класс Hello, объявленный в программе «Hello, World», содержит единственный член — метод Main. Метод Main объявляется с помощью модификатора static. В C# методы могут ссылаться на конкретный экземпляр вмещающего объекта с помощью зарезервированного слова this, однако статические методы могут функционировать, не ссылаясь на конкретный объект. По соглашению статический метод Main является точкой входа в программу. Выходные данные программы формируются с помощью метода WriteLine класса Console, принадлежащего пространству имен System. Этот класс содержится в библиотеках классов платформы.NET Framework, на которые по умолчанию автоматически ссылается компилятор Microsoft C#. Обратите внимание, что в C# не используется собственная библиотека времени выполнения. Вместо этого в C# в качестве библиотеки времени выполнения используется платформа.NET Framework. 1.2 Структура программы; В C# используются следующие основные структурные понятия: программа, пространство имен, тип, член и сборка. Программа C# состоит из одного или нескольких исходных файлов. В программе объявляются типы, которые содержат члены и могут быть упорядочены в пространствах имен. Примерами типов являются классы и интерфейсы. Примерами членов являются поля, методы, свойства и события. При компиляции программ C# выполняется их физическая упаковка в сборки. Файлы сборок обычно имеют расширение exe или dll и представляют собой приложения или библиотеки соответственно. Пример: using System; namespace Acme.Collections public void Push(object data) { public object Pop() { class Entry public Entry(Entry next, object data) { В примере объявляется класс Stack, принадлежащий пространству имен Acme.Collections. Полное имя этого класса — Acme.Collections.Stack. Этот класс содержит несколько членов: поле top, два метода Push и Pop, а также вложенный класс Entry. Класс Entry в свою очередь содержит три члена: поля next и data, а также конструктор. Если исходный код примера хранится в файле acme.cs, команда csc /t:library acme.cs компилирует пример в виде библиотеки (код без точки входа Main) и создает сборку с именем acme.dll. Сборки содержат исполняемый код в форме инструкций промежуточного языка (Intermediate Language,IL), а также символьные данные в форме метаданных. Перед выполнением код IL сборки автоматически преобразуется в код для конкретного процессора с помощью JIT-компилятора среды.NET CLR. Поскольку сборка представляет собой самодокументируемый функциональный модуль, содержащий как код, так и метаданные, в файлах заголовка C# не требуется использовать директивы #include. В программе C# возможность обращения к открытым типам и членам, содержащимся в конкретной сборке, реализуется посредством ссылки на эту сборку во время компиляции программы. Например, если в программе используется класс Acme.Collections.Stack, содержащийся в сборке acme.dll: using System; class Test Если программа хранится в файле test.cs, во время его компиляции ссылка на сборку acme.dll реализуется с помощью параметра компилятора /r: csc /r:acme.dll test.cs В результате этого создается исполняемый файл сборки test.exe, при выполнении которого получаются следующие выходные данные: 100 В C# допускается хранение исходного текста программы в нескольких исходных файлах. При компиляции многофайловой программы C# выполняется совместная обработка всех исходных файлов. Это позволяет использовать в каждом файле ссылки на другие файлы. Концептуально такой подход соответствует объединению всех файлов перед обработкой в единый исходный файл. В C# никогда не используются опережающие объявления, поскольку, за редким исключением, порядок объявления не имеет значения. В C# исходный файл необязательно должен содержать объявление только одного открытого типа. Также имя исходного файла необязательно должно совпадать с именем объявленного в нем типа.
|