|
Эта статья посвящена описанию основных
возможностей нового языка
программирования C#, а также его сравнению с
ближайшими родственниками: Java и C++. Мы
начнем с краткого перечисления сходных
свойств в C# и Java, а затем рассмотрим новые
возможности C#.
Содержание
- C# и Java
- Свойства
- Индексаторы
- Делегаты
- События
- Перечисления
- Коллекции и оператор
Foreach
- Структуры
- Унификация типов
- Перегрузка операторов
- Полиморфизм
- Интерфейсы
- Управление версиями
- Модификаторы
параметров
- Атрибуты
- Операторы выбора
- Встроенные типы
- Модификаторы полей
- Операторы перехода
- Сборки, пространства
имен и уровни доступа
- Арифметика с
указателями
Введение
В июне 2000 года компания Microsoft анонсировала платформу .NET и новый язык программирования, получивший название C# (читается "Си шарп"). C# - это строго типизированный объектно-ориентированный язык, призванный обеспечить оптимальное сочетание удобства, простоты,
выразительности и производительности. Платформа .NET основана на использовании общей среды
выполнения кода CLR (Common Language Runtime), подобной виртуальной Java-машине, и набора библиотек, доступных для ряда языков программирования. Независимо от того, какой язык используется в процессе разработки, программа компилируется в промежуточный код
IL (Intermediate Language). C# и .NET в некотором смысле являются "родственными душами": некоторые свойства языка специально разрабатывались, чтобы обеспечить комфортную работу в среде .NET, в то же время и некоторые свойства .NET специально закладывались для поддержки C#, хотя .NET нацелена на использование многих языков программирования. В этой статье в основном рассматривается C#, но иногда полезно переключаться и на
платформу .NET. Язык C# разрабатывался с учетом опыта многих предшествующих ему языков программирования, но в первую очередь, конечно, C++ и Java. Родителями C# стали Anders Hejlsberg, получивший известность, как автор Delphi, и Scott Wiltamuth.
1. C# и Java
Ниже приведен перечень свойств,
характерных как для C#, так и для Java. Оба эти
языка можно рассматривать как попытку
усовершенствовать C++, и нужно признать, что
в обоих случаях это удалось. Как можно
увидеть из приведенного ниже списка, во
многом C# и Java схожи, но было бы неверно
отождествлять эти языки.
- Исходный текст программы компилируется в промежуточный код, не зависящий от языка и платформы;
этот код в дальнейшем выполняется в специальной управляемой среде.
- Автоматический сбор мусора (Garbage Collection) и запрет на использование указателей. В C# допускается ограниченное использование указателей в блоках кода, помечаемых как
"ненадежные" (unsafe).
- Отсутствие заголовочных файлов. Весь код помещается в пакеты (packages) и сборки (assemblies).
Никаких проблем с порядком объявления классов в случае
наличия перекрестных ссылок.
- Объекты создаются с помощью ключевого
слова new, выделение памяти
производится из "кучи" (heap),
находящейся в распоряжении среды
выполнения.
- Многопоточность поддерживается путем
блокирования объектов
- Интерфейсы, с множественным наследование
интерфейсов, однократное наследование реализаций.
- Внутренние классы
- Отсутствие концепции наследования
классов с заданным уровнем доступа.
- Отсутствие глобальных функций и констант, все
элементы должны принадлежать классам.
- Массивы и строки со встроенной длиной и проверкой границ.
- Не применяются операторы ->, ::. Во всех случаях используется оператор ".".
- null и boolean/bool являются ключевыми словами.
- Любая величина должна быть проинициализирована до
того, как будет использована.
- Нельзя использовать целые числа (integers) для управления операторами if.
- Блоки try могут иметь заключительное предложение
finally.
|