Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
CSharp Language Specification.doc
Скачиваний:
13
Добавлен:
26.09.2019
Размер:
4.75 Mб
Скачать

18. Небезопасный код 490

18.1 Небезопасные контексты 490

18.2 Типы указателя 493

18.3 Фиксированные и перемещаемые переменные 496

18.4 Преобразования указателей 496

18.4.1 Массивы указателей 497

18.5 Указатели в выражениях 498

18.5.1 Косвенное обращение по указателю 499

18.5.2 Доступ к члену по указателю 499

18.5.3 Доступ к элементу по указателю 500

18.5.4 Оператор адреса 501

18.5.5 Увеличение и уменьшение указателя 502

18.5.6 Арифметические операции с указателем 502

18.5.7 Сравнение указателей 503

18.5.8 Оператор sizeof 503

18.6 Оператор fixed 504

18.7 Буферы фиксированного размера 508

18.7.1 Объявления буферов фиксированного размера 508

18.7.2 Буферы фиксированного размера в выражениях 510

18.7.3 Проверка определенного присваивания 511

18.8 Выделение стека 511

18.9 Динамическое выделение памяти 512

1.Введение

C# (произносится как «Си-шарп» или «Си-диез») — это простой, современный, типобезопасный объектно-ориентированный язык программирования. C# базируется на семействе языков программирования C и будет хорошо знаком программистам, работавшим с языками C, C++ и Java. Язык C# стандартизирован ECMA на соответствие стандарту ECMA-334, а также ISO/IEC на соответствие стандарту ISO/IEC 23270. Компилятор Microsoft C# для платформы .NET Framework реализован в полном соответствии с требованиями обоих стандартов.

C# представляет собой объектно-ориентированный язык программирования, однако также обеспечивает поддержку компонентно-ориентированного программирования. Разработка современных приложений все в большей степени базируется на применении программных компонентов в форме автономных и самодокументируемых функциональных модулей. Основной особенностью таких компонентов является реализация модели программирования с использованием свойств, методов, событий и атрибутов, представляющих декларативное описание компонентов, а также включение в них собственной документации. В C# представлены языковые конструкции, непосредственно поддерживающие эти понятия, что делает его близким к естественному языком для создания и применения программных компонентов.

В C# представлены функциональные возможности, позволяющие создавать надежные и устойчивые приложения. Среди них: функция сборки мусора для автоматического освобождения памяти, занимаемой неиспользуемыми объектами; функция обработки исключительных ситуаций, обеспечивающая структурированный и расширяемый подход к обнаружению и устранению ошибок; а также строго типизированная структура языка, не допускающая считывания неинициализированных переменных, выхода индекса массива за пределы допустимого диапазона или выполнения непроверенных приведений типов.

В C# применяется унифицированная система типов. Все типы C#, включая простые типы (например, int и double), наследуются от единственного корневого типа object. Таким образом, все типы используют набор общих операций, что обеспечивает согласованные хранение, передачу и обработку значений любого типа. Кроме того, в C# поддерживаются пользовательские ссылочные типы и типы значений, что обеспечивает динамическое размещение объектов в памяти и встроенное хранение упрощенных структур.

Чтобы обеспечить совместимость и возможность дальнейшего развития программ и библиотек C#, в языке C# большое внимание уделяется управлению версиями. В большинстве языков программирования этому вопросу уделяется недостаточное внимание, в результате чего в создаваемых на таких языках программах чаще обычного возникают проблемы при переходе на новые версии зависимых библиотек. В C# реализованы следующие возможности по управлению версиями: разделение модификаторов virtual и override, применение правил разрешения перегрузки метода и поддержка явного объявления членов интерфейса.

В данной главе описываются важнейшие функциональные возможности языка C#. В последующих главах правила и исключения описываются более детально и зачастую с математическими подробностями. Однако в этой главе акцент сделан на четкости и сжатости, а не на полноте изложения. Основная цель данной главы — предоставить вводную информацию о языке, которая будет полезна при написании простых программ, а также при чтении последующих глав.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]