Компьютерные книги
Главное меню
Главная Поиск по сайту Добавить материал О нас Карта книг Карта сайта
Реклама
computersbooks.net -> Добавить материал -> Языки программирования -> Ватсон К. -> "С#" -> 277

С# - Ватсон К.

Ватсон К. С# — Лори, 2005 . — 879 c.
ISBN 1-861004-98-2
Скачать (прямая ссылка): vatsonc2005.pdf
Предыдущая << 1 .. 271 272 273 274 275 276 < 277 > 278 279 280 281 282 283 .. 404 >> Следующая


Система выполнения программ .NET использует манифест, содержащийся в модуле программы, для раскрытия ссылок на другие модули, имеющиеся в системе, например, на библиотеку Syscem.console, в которой содержится метод writoLinef), позволяющий вывести “Hello, World!".

За манифестом следуют метаданные типов — описание классов, свойств, методов и т, п., которые содержатся в модуле наряду с описанием типов данных, используемых ими параметров и возвращаемых значений, Далее следует собственно двоичный код для каждого типа, хранящийся в виде машиннонезависимого кода на языке Microsoft Intermediate Language (MSIL — промежуточный язык компании Microsoft). Наконец, следует еще одна часть модуля — ресурсы, представляющие

собой невыполняемые части программы (представлен ные в виде файлов с расширением .Resources), напри мер, файлы с рисунками, иконками или сообщениями Хотя часто модуль состоит только из одного файла он также может быть составлен из нескольких файлов как показано на рисунке слева.

Манифест Метаданные типов
\
метаданные типов MSIL-ход
MSIL-ww
Ресурсы
Модули .NET

593

С точки зрения системы выполнения программ .NET модуль, состоящий нз нескольких файлов, представляет собой единую логическую DLL или EXE, которая состоит нз нескольких файлов. Только однн файл содержит манифест, в котором помещаются ссылки на остальные файлы, входящие в состав данного модуля. Файлы, в которых хранится выполняемый код, называются отсеками, в них находятся метаданные типов и MSIL-код. Кроме того, в наличии могут быть еще файлы ресурсов, содержащие невыполняемый код.

Модули, состоящие из нескольких файлов, обычно используются только в некоторых очень сложных приложениях. Отдельный отсек или ресурс загружается только в тот момент, когда он реально начинает выполняться или использоваться, поэтому, когда редко используемые отсеки и ресурсы хранятся в виде отдельных файлов, удается сократить время, затрачиваемое на загрузку, и занимаемую память. Напрнмер, некое приложение, используемое в различных странах, может обладать какими-либо отсеками или ресурсами, написанными на различных национальных языках; такие отсеки или ресурсы должны выделяться в отдельные файлы, с тем чтобы в действительности в память загружался только отсек с фактически используемым локальным языком.

Создание модулей

Теперь попробуем создать модуль и познакомимся с его свойствами. Сначала потребуется создать простую библиотеку классов на С#, на которую мы будем ссылаться на протяжении оставшейся части данной главы. Мы создадим упрощенную версию компонента Shapes, который был упомянут в начале главы.

Создание библиотеки классов

Воспользуйтесь Visual Studio.NET и создайте проект библиотеки классов shapes (см. рис. справа).

Переименуйте файл classl.сэ, создаваемый ПО уМОЛЧанИЮ, В shapes.Св н введите в него исходный код, приведенный ниже. Двоичный файл, который буцет создан на основе файла shapes.cs, получит название shapes.dll и будет использоваться в качестве примера модуля.

Исходный код для Shapes

Исходный код на C# для модуля shapes.dll имеет следующий вид:

namespace Shapes (

public class Circle {

double Radius;

ЩШ «1

PffltidE Iifjfii 3}
P Vtjuei Ваис Tntyacfr ¦ a wsui c*+ ptn|«m Window a [§?3 Wndwn —
¦ ¦ i_J 5е*ц} and CWovnient Project* fiil-Q Other »o|*H Q Sfcodo Sduhro ApptcKion ф Cortrol Lb*r/
ASPJ«tV*cb ASP-NET W«b Serrfce WtbControi Lb*y J
A ipgfect tor ufliioj cUinf to ki Mkrn

ЙН 1SfWpM .

. m I C№gC5tarp\a»f]terzi 2 Встяв... f

ИЙ 6* CTtMof n Crt8e>v. ¦ ЩОмЩв?' №•

j . 1 QIC 1 <&ai | Hdp |
594 Глава 21

public Circle()

(

Hadius * Oj

>

public Circle (double giveiiRadius)

{

Radius * givenRadiue;

i

public double Area()

(

// площадь равняется числу к, умноженному на квадрат радиуса return Syetem.Hath.pl * (Radius * Radius)]

}

public class Triangle f

double Base; double Heightj public Triangle!)

{

Base ¦ 0;

Height - Oj

)

public Triangle{double givenBaee, double givenHeight)

(

Base = givenBase;

Height “ givenHeight;

)

public double AreaO t .

return 0.5F * Base * Height; H плоцадь равняется одной второй

Л произведения основания на высоту

>

}

>

Этот код является очень простым, н в нем не реализованы все возможности, которые могут потребоваться при работе с геометрическими фигурами, но для наших целей этого вполне достаточно. Единственная хитрость заключается в том, что каждый класс — и circle (окружность), н Triangle (треугольник) -- обладает двумя конструкторами, одному нз которых вообще не требуются параметры, а другому параметры необходимы для инициализации экземпляров переменных. Мы вернемся к этому вопросу позднее, при научении модулей.

Компиляция библиотеки классов

При использовании Visual Studio.NET для посгроеиня проекта shapes следует выбрать опцию Build | Build (Ctrl-Shijt-B).

Еслн вы используете компилятор C# из командной строки, то файл зЬарев.са следует откомпилировать с помощью следующей команды:
Предыдущая << 1 .. 271 272 273 274 275 276 < 277 > 278 279 280 281 282 283 .. 404 >> Следующая
Книги
Web-программирован-
ие
Аппаратное обеспечение Графика Руководство по П.О. Самоучитель Теория программирования Фотошоп Языки программирования
Новые книги
Вирт Н. "Систематическое программирование " (Теория программирования)

Эком "Microsoft Excel 2000 шаг за шагом Русская версия самоучитель " (Самоучитель)

Поляков А.Ю. "Методы и алгоритмы компьютерной графики в примерах Vizual C++" (Графика)

Баяковский Ю.М. "Графическая библиотека Open GL " (Графика)

Валиков А. "Технология " (Языки программирования)
Авторские права © 2013 ComputersBooks. Все права защищены.