русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

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

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Вложенные пространства имен


Дата добавления: 2013-12-23; просмотров: 888; Нарушение авторских прав


Использование псевдонимов для имен классов

Для разрешения конфликтов между именами классов

Применение пространств имен

Класс Hexagon

public class Hexagon { // Более интересные методы }

// Класс Square

public class Square { // Еще более интересные методы }

}

Обратите внимание, что пространство имен MyShapes действует как контейнер для всех этих типов. Вы можете разбить единое пространство имен С# на несколь­ко физических файлов. Для этого достаточно просто определить в разных файлах одно и то же пространство имен и поместить в него определения классов:

// circle.cs

namespace MyShapes {

using System;

// Класс Circle

class Circle { // Интересные методы }

}

// hexagon.cs

namespace MyShapes{

using System;

// Класс Hexagon

class Hexagon { // Более интересные методы }

}

// square.cs

namespace MyShapes {

using System:

// Класс Square

class Square { // Еще более интересные методы }

}

Если вам потребуется использовать эти классы внутри другого приложения, удобнее всего это сделать при помощи ключевого слова using:

// Используем объекты, определенные в другом пространстве имен

namespace MyApp {

using System;

using MyShapes;

class ShapeTester {

public static void Main() {

// Все эти объекты были определены в пространстве имен MyShapes

Hexagon h = new Hexagon();

Circle с = new Circle();

Square s = new Square();

}} }

 

Пространства имен могут быть использованы для разрешения конфликтов между именами объектов в тех ситуациях, когда в нашем приложении используются раз­ные объекты с одинаковыми именами. Представим себе такую ситуацию: наш класс ShapeTester должен использовать новое пространство имен, которое называется My3DShapes. В этом пространстве имен определены три класса с теми же именами, но предназначенные для работы с трехмерными объектами:



 

// Еще одно пространство имен для геометрических фигур

namespace My3DShapes {

using System;

// Класс 3D Circle

class Circle{}

// Класс 30 Hexagon

class Hexagon{}

// Класс 3D Square

class Square{}

}

Если вы измените класс ShapeTester как показано ниже, результатом станут три ошибки компилятора, сообщающие о конфликте имен:

// В коде есть двусмысленности!

namespace MyApp {

using System;

using MyShapes;

using My3DShapes;

class ShapeTester {

public static void Main() {

// Неизвестно, к объектам какого пространства имен мы обращаемся

Hexagon h = new Hexagon();

Circle с = new Cirde();

Square s = new Square();

} }}

Проще всего избавиться от подобных конфликтов, указав для каждого класса его полное имя вместе с именем соответствующего пространства имен:

 

// Конфликтов больше нет

public static void Main() {

My3DShapes.Hexagonh = new My3DShapes.Hexagon();

My30Shapes.Circleс = new My3DShapes.Circle();

MyShapes.Squares = new MyShapes.SquareO:

}

 

Еще одна возможность избавиться от конфликтов имен — использовать для имен классов псевдонимы. Например:

 

namespace MyApp {

using System;

using MyShapes;

using My3DShapes;

// Создаем псевдоним для класса из другого пространства имен

using The3DHexagon = My3DShapes.Hexagon;

class ShapeTester {

public static void Main() {

MyShapes.Hexagon h = new MyShapes.Hexagon();

MyShapes.Circle с = new MyShapes.Circle();

MyShapes.Square s = new MyShapes.Square();

// Создаем объект при помощи псевдонима

The3DHexagon h2 = new The3DHexagon();

}}}

 

Последнее, что необходимо сообщить о пространствах имен, — то, что вы можете без каких-либо ограничений вкладывать одни пространства имен в другие. Такой подход очень часто используется в библиотеках базовых классов .NET для организации типов. Например, если вы хотите создать пространство имен более высокого уровня, в котором будет находиться наше пространство имен My3DShapes, это можно сделать следующим образом:

// Классы для геометрических фигур расположены в пространстве имен Chapter2Types.My3DShapes

 

namespace Chapter2Types {

namespace My3DShapes {

using System;

// Класс 3D Circle

class Circle{}

// Класс 3D Hexagon

class Hexagon{}

// Класс 3D Square

class Square{}

}}



<== предыдущая лекция | следующая лекция ==>
Определяем пользовательские пространства имен | Процедуры и функции. Отличия


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.003 сек.