русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


Простір імен


Дата додавання: 2015-01-08; переглядів: 1700.


Простір імен - це контейнер для типів, що визначає зону їх видимості. Просторам імен запобігають конфлікти імен і використовуються для двох взаємозв'язаних цілей:

– логічного групування елементів програми, розташованих в різних фізичних файлах;

– групування імен, що надаються збіркою в користування іншим модулям.

У всіх програмах, створених раніше, використовувався простір імен, що створюється за умовчанням. Реальні програми найчастіше розробляються групою програмістів, кожен з яких працює зі своїм набором фізичних файлів (одиниць компіляції), що зберігають елементи створюваного застосування. Якщо в різних файлах описати простори імен з одним і тим же ім'ям, то при побудові додатку, що складається з цих файлів, буде зкомпоновано єдиний простір імен.

 

Простори імен можуть бути вкладеними, наприклад:

namespace State

{

namespace City

{

...

}

}

Таке оголошення аналогічно наступному:

namespace State.City

{

}

Вкладені простори імен, як ви напевно встигли відмітити, широко застосовуються в бібліотеці .NET.

Існує три способи використання типу, визначеного в якому-небудь просторі імен:

1. Використовувати повністю кваліфіковане ім'я. Наприклад, в просторі імен System.Runtime.Serialization.Formatters.Binary описаний клас BinaryFormatter.

Створення об'єкту цього класу за допомогою кваліфікованого імені виглядає так:

System.Runtime.Serialization.Formatters.Binary.BinaryFormatter bf =

new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();

 

2. Використовувати директиву using, за допомогою якої імпортуються всі імена із заданого простору. В цьому випадку попередній приклад прийме вигляд

using System.Runtime.Serialization.Formatters.Binary;

BinaryFormatter bf = new BinaryFormatter();

 

Директива using повинна розташовуватися зовні або усередині простору імен, проте до любих описів типів.

3. Використовувати псевдонім типу. Це робиться за допомогою другої форми директивиusing:

using BinF =

System.Runtime.Serialization.Formatters.Binary.BinaryFormatter;

BinF bf = new BinF();

 

Перший спосіб застосовується при одноразовому використанні імені типу “неглибоко” вкладених просторів імен, другий - в більшості решти випадків, що ми і робили у всіх прикладах, а третій можна рекомендувати при багаторазовому використанні довгого імені типу.

Має місце можливість застосовувати псевдонім простору імен за допомогою операції ::, наприклад:

 

using SI0 = System.I0 // псевдонім простору імен

using MIO = MyLibrary.IO; // псевдонім простору імен

class Program

{

static void Main()

{

// використання псевдонімів

SI0 :: Stream s = new MIO :: Empty Stream();

}

}

 

Використання псевдоніма для простору імен гарантує, що подальші підключення інших просторів імен до цієї збірки не вплинуть на існуючі визначення. Зліва від операції :: можна вказати ідентифікатор global. Він гарантує, що пошук ідентифікатора, розташованого праворуч операції, виконуватиметься тільки в глобальному просторі імен. Мета користування цього ідентифікатора та ж: не допустити змін існуючих визначень при розробці наступних версій програми, в яких в неї бути додані нові простори імен, що містять елементи з такими іменами.

Таким чином, збірки забезпечують фізичне групування типів, а простори імен - логічне. В світі мережевого програмування, коли програмістові доступні десятки тисяч класів, простори імен абсолютно необхідні як для класифікації і пошуку, так і для запобігання конфліктам імен типів.

 


<== попередня лекція | наступна лекція ==>
Атрибути | Директиви препроцесора


Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн