/
n-dimens
/
pascalabcnet
Обзор
Документация
Войти
/
n-dimens
/
pascalabcnet
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
PABCNetHelp/LangGuide/Modules/uses.html
84 строки
5 KB
samuraiGH
adding working-tree-encoding attribute (#3325)
07 ноя 2025, 16:12
Не верифицирован
07 ноя 2025, 16:12
cf1fd29
Код
Авторство
О чём код?
<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>