85 lines
5.1 KiB
HTML
85 lines
5.1 KiB
HTML
<html>
|
||
|
||
<head>
|
||
<meta http-equiv="Content-Language" content="en-us">
|
||
|
||
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
|
||
<title></title>
|
||
<link rel="StyleSheet" href="../../default.css">
|
||
<style type="text/css">
|
||
.auto-style1 {
|
||
font-family: monospace;
|
||
font-size: 10pt;
|
||
color: #000080;
|
||
}
|
||
</style>
|
||
</head>
|
||
|
||
<body>
|
||
<H1>Раздел uses </H1>
|
||
<p>Раздел <b><code>uses</code></b> состоит из нескольких подряд идущих секций
|
||
<strong><span class="auto-style1">uses</span></strong>, каждая из которых имеет
|
||
вид:</p>
|
||
<blockquote>
|
||
<p><b><code>uses</code></b> <i>список имен</i><code>;</code></p>
|
||
</blockquote>
|
||
<p>Имена в списке перечисляются через запятую и могут быть либо
|
||
именами подключаемых внешних модулей <b>PascalABC.NET</b>,
|
||
либо пространствами имен .NET. Например:</p>
|
||
<blockquote>
|
||
<p><b><code>uses</code></b><code> System, System.Collections.Generic, MyUnit;</code></p>
|
||
</blockquote>
|
||
<p>Здесь <code>MyUnit</code> - модуль
|
||
<b>PascalABC.NET</b>, представленный в виде исходного
|
||
текста или откомпилированного .pcu-модуля, <code>
|
||
System</code> и <code>System.Collections.Generic</code>
|
||
- пространства имен .NET.</p>
|
||
<p>В модуле или основной программе, которая содержит раздел
|
||
<b><code>uses</code></b>, можно использовать все имена из
|
||
подключаемых модулей <b>PascalABC.NET</b> и пространств
|
||
имен .NET. Основное отличие между модулями и
|
||
пространствами имен .NET состоит в том, что модуль
|
||
содержит код, а пространства имен .NET содержат лишь
|
||
имена - для использования кода его необходимо подключить с помощью
|
||
<a href="../CompilerDirectives/index_directives.html">директивы
|
||
компилятора</a> <code>{$reference</code> <i>ИмяСборки</i><code>}</code>,
|
||
где <i>ИмяСборки</i> - имя dll-файла,
|
||
содержащего .NET-код. Другое не менее важное отличие
|
||
состоит в том, что в модуле или основной программе нельзя использовать имена,
|
||
определенные в другом модуле, без подключения этого модуля в разделе <b>
|
||
<code>uses</code></b>.
|
||
Напротив, если сборка .NET подключена директивой
|
||
<code>$reference</code>, то можно использовать ее имена,
|
||
явно уточняя их пространством имен, не подключая это пространство имен в разделе
|
||
uses. Например:</p>
|
||
<blockquote>
|
||
<p><code><b>begin</b><br>
|
||
System.Console.WriteLine('PascalABC.NET');<br>
|
||
<b>end</b>.</code></p>
|
||
</blockquote>
|
||
<p>По умолчанию в первой секции <b><code>uses</code></b>
|
||
неявно первым подключается системный модуль PABCSystem, содержащий стандартные
|
||
константы, типы, процедуры и функции. Даже если раздел <b><code>uses</code></b>
|
||
отсутствует, модуль PABCSystem подключается неявно. Кроме того, по умолчанию с помощью неявной директивы
|
||
<code>$reference</code> подключаются сборки System.dll, System.Core.dll и
|
||
mscorlib.dll, содержащие основные .NET-типы.</p>
|
||
<p>Поиск глобальных имен осуществляется вначале в текущем модуле
|
||
или основной программе, затем во всех подключенных модулях и пространствах имен,
|
||
начиная с самого правого в секции <b><code>uses</code></b>
|
||
и заканчивая самым левым. При этом считается, что пространство
|
||
имен более правого модуля вложено в пространство имен более левого. Таким
|
||
образом, конфликта имен не происходит. Если необходимо использовать имя из
|
||
конкретного модуля или пространства имен, следует использовать запись </p>
|
||
<blockquote>
|
||
<p><i>ИмяМодуля</i><code>.</code><i>Имя</i></p>
|
||
</blockquote>
|
||
<p>или</p>
|
||
<blockquote>
|
||
<p><i>ИмяПространстваИменNET</i><code>.</code><i>Имя</i></p>
|
||
</blockquote>
|
||
<p>В качестве имени модуля может выступать также имя основной
|
||
программы если у нее присутствует заголовок <b><code>program</code></b>.</p>
|
||
</body>
|
||
|
||
</html>
|