Пространство имен, компоновочные файлы и препроцессор
Пространства имен предотвращают конфликты по совпадению имен в процессе создания больших систем. Пространство имен создается с помощью ключевого слова 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; просмотров: 1359;