

Архитектуры и модели программ и знаний
Лекция 19
Язык C# и LINQ
Сафонов Владимир Олегович
Профессор кафедры информатики Заведующий лабораторией Java-технологии
(http://polyhimnie.math.spbu.ru/jtl)
Санкт-Петербургский государственный университет
Email: vosafonov@gmail.com
WWW: http://www.vladimirsafonov.org

Язык C#
Полностью отражает возможности
.NET
В настоящее время – наиболее мощный и гибкий из всех языков программирования
C# более сложен, чем Java. Он требует детального изученияДля программистов, имеющих опыт
использования C++, изучить C# прощеЛитература: Petzold Ch. Programming Windows in C#. – MS Press, 2002.
(C) Сафонов В.О. 2012

Цели
Введение в C#
СинтаксисБазовые концепции
Технологии
Обзор C# и инструментов .NET
(C) Сафонов В.О. 2012

Содержание
Часть 1: Обзор C#Часть 2: Элементы C#Часть 3: Инструменты программирования на C#Часть 4: Общая картинаРезюме
(C) Сафонов В.О. 2012

Часть 1: Обзор C#
Компонентно-ориентированные системы
Конкепция компоненты в .NETПреимущества C#
(C) Сафонов В.О. 2012

системы
CORBA (1988): первая попытка построения компонентно- |
||
ориентированной языково-независимой объектно-ориентированной |
||
распределенной модели программирования |
||
COM |
|
|
|
Наиболее успешная компонентная модель из всех известных |
|
|
Единственная жизнеспособная коммерческая компонентная |
|
|
модель |
|
Обеспечивает повторное использование и интеграцию |
||
Но: |
компонент, разработанных различными компаниями |
|
|
COM имеет весьма солидный возраст (около 20 лет) |
|
|
|
DCOM не обеспечивает нормальную работу через Internet |
|
|
Появляются новые компонентно-ориентированные системы |
|
|
“ад DLL” – проблема новых версий библиотек |
|
|
Сложна для использования, даже если применяются |
|
|
адекватные инструменты |
COM не является по-настоящему языково-независимой |
||
|
|
Использует неявные соглашения относительно двоичного |
|
|
представления данных |
|
Поддерживает минимальную систему типов |
(C) Сафонов В.О. 2012

Концепция компоненты в
.NET
Использует лучшие возможности COM+
Основана на интерфейсах как абстрактных контрактах
Компоненты основаны на использовании и
определении интерфейсовАнализ полномочий и контрактов во время
выполненияПоведение, управляемое атрибутами
Дополнения:
Объектная ориентированность, включая наследование
Естественная модель события
Общая система типов и система поддержки
выполнения
Расширяемость на любом уровне
(C) Сафонов В.О. 2012

Преимущества C#
Первый компонентно-ориентированный языкОснован на опыте COM+
Поддерживает:
Пространства именУправление версиями
Разработку на основе атрибутов
Мощь C++ плюс легкость Microsoft Visual Basic®
Более концептуально чист, чем C++Более структурирован, чем Visual BasicБолее мощный, чем Java
С самого начала основан на международных стандартах (в отличие от C++ и Java).
г. Действующий стандарт: ECMA-334, июнь 2006
(C) Сафонов В.О. 2012

Часть 2: элементы C#
Форма и структураОбзор системы типов C#Обзор C#
(C) Сафонов В.О. 2012

C#: форма и структура
Нет заголовочных файлов (в отличие от C/C++)
Модель определений и объявлений
Похожая на Visual Basic, Pascal, Modula, Java
Реализация сходна с C++
Код, объединенный с объявлениями
Поддержка корректности и сопровождения кода
Применимость для коллективной разработки
Объявления доступны через метаданныеМакросы: Есть условная компиляция, но нет макроопределений
#define MYAPP
а не (как в C / C++) : #define CRASH(x) (x/0)
(C) Сафонов В.О. 2012

C#: система типов
Основана на общей системе типов .NET Framework
Естественный доступ к системе типов NET: - int , System.Int32 , native int
C# – любая из этих форм ссылок на тип корректна в
C# “рожден” вместе с .NET и для .NET
Базовые концепции:
Все сущности являются объектами
Неявное наследование от System.ObjectЯвное разделение на типы-значения и типы-
ссылкиЗначения: примитивные типы, перечисления,
структуры
Ссылки: интерфейсы, классы, массивы
(C) Сафонов В.О. 2012