Пространство имен, компоновочные файлы и препроцессор


Пространства имен предотвращают конфликты по совпадению имен в процессе создания больших систем. Пространство имен создается с помощью ключевого слова namesafe:

namesafe имя { элементы }

Элементами могут быть классы, структуры, делегаты, перечисления, интерфейсы или другое пространство имен. Доступ к пространству имен выполняется с помощью ключевого слова using.

В C# так же как и в С и в C++ используется препроцессор.

Компоновочные файлы являются неотъемлемой частью среды .NET Framework. Файл состоит из 4-х разделов, в которых содержится: 1) информация о самом файле, 2) информация о типах данных, 3) программный код в формате (Microsoft Intermediate Language), 4) ресурсы, используемые в программе.

Модификатор доступа internal, связанный с некоторым элементом компоновочного файла, указывает, что имя известно в пределах компоновочного файла, но неизвестно вне его.

Потенциально опасный код и указатели

Формирование потенциально опасного кода связано в основном с применением указателей. В отличие от С и C++ описания указателей декларируются списком. Например, int * p, q; - воспринимается в C# как декларация 2-х указательных переменных. Для работы с адресами используются операторы: «*» и «&».

Для указания потенциально опасного кода используется ключевое слово unsafe, размещаемое, например, перед декларацией метода. Для того, чтобы избежать автоматического удаления из heap-памяти «сборщиком мусора» объекта, на который ссылается указатель, можно применить оператор (модификатор) fixed.

Пример

………………………………………

unsafe public static void Main()

{

Test o = new Test(19);

fixed (int *p = & o.num)

{ *p = 10; }

……………………………………….

}

В данном примере выполняется защита объекта, связанного с указателем p, от удаления.

Указатели в программах можно сравнивать используя операторы: ==, <, >.

Вопросы для самоконтроля

· В какой из языков C# или C++ встроен тип bool?

· Как представлены символы в C#?

· Как интерпретируются операторы &, |, Ù для арифметических и булевских типов данных?

· Какого типа наследование применяется в C#?

· Чем отличается управление параметрами в C# и C++?

· Что обеспечивают модификаторы типа параметров – ref и out?

· Что обеспечивает модификатор params?

· В чем причина ввода в C# структур?

· Что представляют из себя интерфейсы и какова их связь с классами?

· Что представляет из себя понятие делегата?

· Для каких целей используются в языке C# операторы is, as, typeof?

· Что создается в программе с использованием ключевого символа namesafe?

· Что способствует в языке созданию потенциально опасного кода?

Вопросы для самостоятельного изучения

· Как «работают» в C# массивы с рваными краями?

 

Литература



Дата добавления: 2016-05-26; просмотров: 1282;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.007 сек.