русс | укр

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

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

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

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


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

Определяем пользовательские пространства имен


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


Еще раз об упаковке и распаковке

Упаковка и распаковка — это наиболее удоб­ный способ преобразования структурного типа в ссылочный, и наоборот. Основное назначение структур — возможность получения некоторых преимуществ объектной ориентации, но при более высокой производительности за счет размещения в стеке. Чтобы преобразовать структуру в ссылку на объект, необходимо упако­вать ее экземпляр:

 

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

Employee stan = new Employee (EmpType.Grunt, "Stan", 10);

object stanlnBox = stan;

 

Поскольку stanlnBox относится к ссылочным типам данных, но при этом сохраняет внутренние значения исходного типа данных Employee, вы можете использовать stan во всех случаях, когда вам нужен объект, и при необходимости производить распаковку.

 

// Поскольку мы ранее произвели упаковку данных, мы можем распаковать их и производить операции с содержимым

public void UnboxThisEmployee(object о){

 

// Производим распаковку в структуру Employee для получения доступа ко всем полям

Employee temp = (Employee)o;

Console.WriteLine(temp.name + "is alive!");

}

Вызов этого метода может выглядеть следующим образом:

// Передаем упакованного сотрудника на обработку

t.UnboxThisEmployee(stanlnBox);

Вспомним, что компилятор С# при необходимости автоматически производит упаковку. Поэтому вполне допускается передать объект stan (относящийся кEmployee) методу UnboxThisEmployee() напрямую:

 

// Stan будет упакован автоматически

t.UnboxThisEmployee(stan);

Однако, поскольку вы определили метод UnboxThisEmployee() таким образом, он обязан принимать объект в качестве параметра, вам придется распаковать ссылку для получения доступа к полям структуры Employee.

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



Предположим, что мы создаем набор геометрических классов. Один класс получит название Square (квадрат), второй — Circle (окружность), а третий — Не (шестиугольник). Поскольку все эти классы относятся к геометрическим фигурам, мы принимаем решение сгруппировать их в общем пользовательском странстве имен. Основных вариантов в нашем распоряжении два. Согласно которому, мы можем определить все классы в одном файле (shapeslib.es):

// shapeslib.es

namespace MyShapes {

using System

// Класс Circle

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



<== предыдущая лекция | следующая лекция ==>
Атрибуты][модификаторы]struct имя_структуры | Вложенные пространства имен


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


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

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

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


 


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

 
 

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

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