Схема процессов разработки и исполнения Java-программ
Язык С# разрабатывался для создания кода .NET Framework, поэтому он использует две важные составляющие этой технологии:
- не зависящую от языка среду исполнения CLR, которая поддерживает программирование с использованием нескольких языков, обеспечивает переносимость кода и безопасность передачи данных;
- библиотеку классов .NET, которая дает программе доступ к среде исполнения,
-Microsoft позиционирует С# как универсальную переносимую платформу аналогичную Java. С# вобрал в себя лучшее от С++ и Java, устранив их недостатки. C# имеет стиль синтаксиса языка C (для управляющих конструкций, блоков кода, описания сигнатуры методов и др.), много общего с Java (отсутствие множественного наследования и шаблонов, наличие сборщика мусора) и с Delphi (ориентированность на создание компонент), и в то же время имеет и свои особенности.
Важной и отличительной от языка С++ особенностью C# является его простота. При создании языка в основу дизайна легли следующие основные принципы:
- легкость написания приложений, доминирующая над мощностью языка и скоростью выполнения;
- простота поддержки приложений, в связи с чем в язык включили поддержку XML-комментариев и контроля версий.
Особенности языка C#
1. C# – ОО язык, как и вся платформа .NET. Более того, это язык, ориентированный на написание компонент. Язык позволяет рассматривать все типы (даже примитивные) как объекты. Указатели больше не нужны, но в отличие от Java обеспечивается возможность их использования. Управление памятью производится автоматически.
2. C# создан для программирования в управляемой среде с присутствующим сборщиком мусора, но позволяет писать и неуправляемый (unmanaged) код. Перед удалением недоступного объекта из памяти автоматически вызывается деструктор. В отличие от C++ деструктор не вызывается при выходе за пределы области видимости, в которой объект был создан. Для утилизации объектов, инкапсулирующих неуправляемые ресурсы, деструктор неявным образом вызывает метод Finalize для базового класса объекта.
3. В язык C# включены и инновационные элементы – делегаты (delegates) и индексаторы (indexers).
4. В С# предусмотрены встроенные синтаксические конструкции для работы с перечислениями, структурами и свойствами классов. В С# осталась возможность перегружать операторы, унаследованные от C++. При этом значительная часть возникавших при этом сложностей ликвидирована.
5. В C# представлена концепция пространств имен, аналогичная пакетам в Java. Это позволяет иерархически структурировать систему типов, что делает код намного более понятным и оптимизирует именование. Можно рассматривать пространства имен как директории, а языковые типы как файлы в этих директориях.
6. Предусмотрена полная поддержка использования программных интерфейсов. Однако в отличие от классической модели СОМ применение интерфейсов – это не единственный способ работы с типами, использующий различные двоичные модули. .NET позволяет передавать объекты (как ссылки или как значения) через границы программных модулей.
7. C# позволяет использовать при разработке парадигму атрибутивного программирования, когда в компиляционных модулях вместе с типом может сохраняться метаинформация. Это позволяет присваивать типам характеристики для описания в будущем поведения данной сущности. Данная информация впоследствии может быть получена и использована во время выполнения, причем, не запуская компонент. Работа с атрибутами позволяет использовать COM, COM+ и DLL в C# приложениях, работающих в среде .NET.
8. В C# были предприняты меры для исключения ошибок при обновлении программного обеспечения. Изменение кода, в такой ситуации, может непредсказуемо изменить суть самой программы. Чтобы помочь разработчикам бороться с этой проблемой C# включает в себя поддержку совместимости версий. В частности, в отличие от C++ и Java, если метод класса был изменен, это должно быть специально оговорено. Это позволяет обойти ошибки в коде и обеспечить гибкую совместимость версий.
9. Также новой особенностью является native-поддержка интерфейсов и наследования интерфейсов.
Недостаток: язык С# генерирует код, предназначенный для выполнения только в среде выполнения .NET. Например, невозможно использовать С# для создания классического СОМ сервера.
Дата добавления: 2017-09-19; просмотров: 626;