louis vuitton bag moncler jacka ugg boots mbt sko louis vuitton oslo moncler ugg www.steklo1.ru
   Поиск
 

FrameWork

MicroSoft DotNet

Cи Шарп это просто Simple C#
Логин Пароль Вход Регистрация
Главная
Изучаем C#
Web-приложения
Win-приложения
Web-сервисы
ADO.NET
FrameWork
Алгоритмы
Исходники
Классы
Среда разработки
Статьи
Форум
FAQ
О Проекте
Обратная связь
Отблагодарить
Rambler's Top100

Общая система типов

CLR тесно связана с типами. Типы предоставляют определенную функциональность вашим приложениям и компонентам.
Они являются механизмом, позволяющим коду, написанному на одном языке
программирования, взаимодействовать с кодом, написанным на другом. Поскольку
типы являются основой CLR, Microsoft создала формальную спецификацию общую систему типов (Common Type System, CTS), описывающую определение
типов и их поведение.

В спецификации GTS утверждается, что любой тип может содержать 0 или более
членов.
• Поле Переменная, являющаяся частью состояния объекта. Поле идентифицируется своим именем и типом.
• Метод Функция, выполняющая некоторое действие над объектом, зачастую
изменяя его состояние. Метод имеет имя, сигнатуру и модификаторы. Сигнатура определяет соглашение по вызову метода, число параметров (и их последовательность), типы параметров, а также тип значения, возвращаемого методом.
• Свойство Для вызывающей стороны этот член выглядит как поле, но в реализации типа он выглядит как метод (или два). Свойства позволяют типу, в
котором они реализованы, проверить входные параметры и состояние объекта, прежде чем предоставить доступ к своим значениям и/или вычислять значения только при необходимости. Свойства также упрощают синтаксис обращения к типу. И, наконец, свойства позволяют создавать "поля" только для чтения
или только для записи.
• Событие Обеспечивают механизм взаимных уведомлений объектов. Так,
кнопка может предоставлять событие, уведомляющее другие объекты о том, что
ее щелкнули.
CTS также определяет правила для видимости типов и доступа к их членам.
Например, если тип помечен как открытый (public) (в С# — public), он экспорТируется, видим и доступен любой сборке. С другой стороны, если тип помечен
как сборочный (assembly) (в С# — internal), он видим и доступен только коду той
сборки, в которой реализован. Таким образом, CTS определяет правила, по которым сборки формируют границы видимости типа, a CLR реализует эти правила.
Независимо от того, видим ли тип вызывающему коду, этот тип контролирует
доступ к своим членам со стороны вызывающего кода. Вот допустимые варианты
управления доступом к методам или полям.
• Закрытый Метод может быть вызван другими методами только из того же
типа,
• Родовой Метод может быть вызван производными типами независимо от того,
в какой они сборке. Во многих языках (например, в C++ и С#) такой модификатор называется protected.
• Родовой и сборочный Метод может быть вызван производными типами, но
только если они определены в той же сборке. Многие языки (вроде С# и Visual
Basic) не реализуют такое ограничение доступа. В ассемблере IL такой моди-
фикатор, естественно, предусмотрен.
• Сборочный Метод может быть вызван любым кодом из той же сборки. Во
многих языках этому соответствует модификатор i n t e r n a l .
• Родовой или сборочный Метод может быть вызван производными типами из любой сборки и любыми типами из той же сборки. В С# этому соответствует protected internal.
• Открытый Метод доступен любому коду из любой сборки.
Кроме того, CTS определяет правила для наследования типов, виртуальных
функций, времени жизни объектов и т. д. Эти правила введены для реализации
семантики современных языков. На самом деле вам не обязательно знать правила CTS как таковые: выбранный вами язык представит свой синтаксис и правила
для типов и установит соответствие собственного специфического синтаксиса
синтаксису «языка» CLR при создании управляемого модуля.
Начав работать с CLR, я решил, что лучше всего рассматривать язык и поведение кода как отдельные вещи. Вы можете определить собственный тип со своими
членами на C++. Естественно, тот же тип с теми же членами вы можете определить на С# или Visual Basic. Конечно, синтаксис, используемый при определении
типа, зависит от языка, но тип будет вести себя независимо от языка, так как поведение определяется общей системой типов CLR.
Чтобы пояснить эту идею, приведу пример. CTS поддерживает только единичное наследование. Таким образом, поскольку C++ поддерживает типы, наследуемые от нескольких базовых типов, CTS не может принять и оперировать такими
типами. Чтобы помочь разработчику, компилятор Visual C++ сообщает об ошибке, обнаруживая попытку создать управляемый код, включающий типы, наследуемые от нескольких базовых типов.
Еще одно правило CTS: все типы должны (в конечном счете) наследовать типу
System. Obj ect. Как видите, Object — имя типа, определенного в пространстве имен
System. Object является корнем всех остальных типов, гарантируя наличие некоторой минимальной функциональности у каждого экземпляра типа. В частности,
тип System. Object позволяет:
• сравнивать два экземпляра;
• получать хэш-код экземпляра;
• определять истинный тип экземпляра;
• получать ограниченную копию экземпляра;
• получать текущее состояние экземпляра объекта в виде строки.

Предыдущая стр.    Оглавление    Следующая стр.
Средняя оценка: (1 - 1 голосов)
Для оценки необходимо зарегистрироваться


Только зарегистрировавшиеся пользователи могут оставлять комментарии



Практический обучающий видео-курс "Основы C#"

От профессионального
разработчика для начинающих
и опытных программистов!

Кликните, чтобы изучить
язык C# с нуля и научиться
писать программы под платформу .NET!