c# 3.0

32
C# 3.0 Андрей Свердлов

Upload: constantin-kichinsky

Post on 15-Jun-2015

2.475 views

Category:

Documents


1 download

DESCRIPTION

C# 3.0, Андрей Свердлов, Клуб MAInfo.ru

TRANSCRIPT

Page 1: C# 3.0

C# 3.0

Андрей Свердлов

Page 2: C# 3.0

Эволюция языков программирования

Page 3: C# 3.0

Что хотелось бы от ЯП

Мульти-парадиг-

мальность

Унифици-рованный доступ к данным

Чтобы писалось в

кайф

Деклара-тивное

програм-мирование

Повышение уровня

абстракции

Продуктивность

Page 4: C# 3.0

Что насчет C#?

C# (1.0)

Page 5: C# 3.0

C# (1.0)

• Объектно-ориентированный язык;• Библиотека классов:

– Windows Forms – дизайн окон;

– ADO.NET – доступ к данным;

– ASP.NET – web-приложения;

– .NET Remoting – сетевое взаимодействие;

• Делегаты и события;• Reflection – динамическая информация о типах

данных;• GC – сборка мусора, автоматическое управление

памятью (кучей).

Page 6: C# 3.0

C# (1.0)

Мульти-парадиг-

мальность

Унифици-рованный доступ к данным

Чтобы писалось в

кайф

Деклара-тивное

програм-мирование

Повышение уровня

абстракции

Продуктивность

Page 7: C# 3.0

Что насчет C#?

C# (1.0)

C# 2.0

Управляемый код (сборка мусора, reflection, …)

Page 8: C# 3.0

C# 2.0

• Поддержка 64-битных приложений;• Поддержка Access Control List;• Улучшены:

– ADO.NET – асинхронность и пользовательские типы;

– ASP.NET – быстрее, выше, сильнее;– Всякие сетевые штуки;– I/O;– …

• Generic – List<T> m_MyList;

Page 9: C# 3.0

C# 2.0

Мульти-парадиг-

мальность

Унифици-рованный доступ к данным

Чтобы писалось в

кайф

Деклара-тивное

програм-мирование

Повышение уровня

абстракции

Продуктивность

Page 10: C# 3.0

Что насчет C#?

C# (1.0)

C# 2.0

C# 3.0

Управляемый код (сборка мусора, reflection, …)

Generics (родовое программирование, статическая параметризация типов)

Page 11: C# 3.0

C# 3.0• Изменения языка:

– Неявная типизация локальных перменных (Implicitly Typed Local Variables);– Инциализация объектов и коллекций (Object & Collection Initializers);– Расширения библиотечных классов (Extension Methods);– Анонимные типы данных (Anonymous Types);– Лямбда-вычисления (Lambda Expressions);– Внутренний язык запросов (Query Keywords);– Автосвойства (Auto-implemented Properties);– Частичные определения методов (Partial Method Definitions);

• Работа с данными:– LINQ;– O/R Designer;– SQL Server Compact 3.5 (только в Visual C# 2008 Express);

• Встроенная поддержка WPF (редактор форм + IntelliSense);• Встроенная поддержка WCF;• Создание дистрибутивов ClickOnce для WPF Browser Applications.

Page 12: C# 3.0

C# 3.0

Мульти-парадиг-

мальность

Унифици-рованный доступ к данным

Чтобы писалось в

кайф

Деклара-тивное

програм-мирование

Повышение уровня

абстракции

Продуктивность

Page 13: C# 3.0

Что насчет C#?

C# (1.0)

C# 2.0

C# 3.0

Управляемый код (сборка мусора, reflection, …)

Generics (родовое программирование,

статическая параметризация типов)

Декларативное программированиеLanguage Integrated Query

Page 14: C# 3.0

C# 3.0• Изменения языка:

– Неявная типизация локальных переменных (Implicitly Typed Local Variables);– Инциализация объектов и коллекций (Object & Collection Initializers);– Анонимные типы данных (Anonymous Types);– Расширения библиотечных классов (Extension Methods);– Внутренний язык запросов (Query Keywords);– Лямбда-вычисления (Lambda Expressions);– Автосвойства (Auto-implemented Properties);– Частичные определения методов (Partial Method Definitions);

• Работа с данными:– LINQ;– O/R Designer;– SQL Server Compact 3.5;

• Встроенная поддержка WPF (редактор форм + IntelliSense);• Встроенная поддержка WCF;• Создание дистрибутивов ClickOnce для WPF Browser Applications.

Page 15: C# 3.0

Неявная типизация локальных переменных

Демо №1.1

Page 16: C# 3.0

Неявная типизация локальных переменных

• Объявление типа var;

• Только для локальных переменных;

• Не является слабой или отложенной типизацией! Компилятор сам определяет наиболее подходящий тип;

• Может использоваться внутри for, foreach, using.

Page 17: C# 3.0

Инциализация объектов и коллекций

Демо №1.2

Page 18: C# 3.0

Инциализация объектов и коллекций

• Нужно всегда вызывать нормальный конструктор;

• Коллекция – все, что IEnumerable и имеет public метод Add;

• Поля объектов инициализируются в любом порядке и количестве.

Page 19: C# 3.0

Анонимные типы данных

Демо №1.3

Page 20: C# 3.0

Анонимные типы данных

• Это классы с public read-only полями;

• Обязательно использование var;

• Тип знает только компилятор – динамические типы!

• Дальнейшее использование данных с анонимным типом только через var.

Page 21: C# 3.0

Внутренний язык запросов

• Теперь можно писать запросы, например:

• Ключевые слова LINQ встроены в синтаксис C#.

О LINQ чуть позже

var res = from x in Students where x.Age>16 select x.Name;

Page 22: C# 3.0

Расширения библиотечных классов

Демо №2

Page 23: C# 3.0

Расширения библиотечных классов

• Можно «добавлять» методы в библиотечные классы;

• Методы доступны только как методы конкретной переменной;

• Методы объявляются как static в static классе;

• В аргументах обязательно указывается this <расширяемый_класс> <аргумент>

Page 24: C# 3.0

Автосвойства

Демо №3

Page 25: C# 3.0

Автосвойства

• Обязательно содержат и get, и set;

• В read-only свойстве set заменяется на private set;

• Удобно

Page 26: C# 3.0

Частичные определения методов

• Определение: public partial void Method ();

• Реализация: public partial void Method () {…} ;

• Странная ситуация - нет документации в MSDN.

Page 27: C# 3.0

C# 3.0• Изменения языка:

– Неявная типизация локальных переменных (Implicitly Typed Local Variables);– Инциализация объектов и коллекций (Object & Collection Initializers);– Расширения библиотечных классов (Extension Methods);– Анонимные типы данных (Anonymous Types);– Лямбда-вычисления (Lambda Expressions);– Внутренний язык запросов (Query Keywords);– Автосвойства (Auto-implemented Properties);– Частичные определения методов (Partial Method Definitions);

• Работа с данными:– LINQ;– O/R Designer;– SQL Server Compact 3.5;

• Встроенная поддержка WPF (редактор форм + IntelliSense);• Встроенная поддержка WCF;• Создание дистрибутивов ClickOnce для WPF Browser Applications.

Page 28: C# 3.0

LINQ

from id in source

{ from id in source |

join id in source on expr equals expr [ into id ] |

let id = expr |

where condition |

orderby ordering, ordering, … }

select expr | group expr by key

[ into id query ]

Page 29: C# 3.0

LINQ и расширения

• Все выражения в запросе преобразуются в вызовы методов расширений:– Where; – OrderBy;– Select;– GroupBy;– Join;– …

Page 30: C# 3.0

Object Relational Designer

• Визуальный редактор классов и их отношений;

• Позволяет привязывать объекты из базы данных к объектам LINQ;

• Похож на UML, но намного беднее;

• Наверно прикольная штука

Page 31: C# 3.0

C# 3.0• Работа с данными:

– LINQ;– O/R Designer;– SQL Server Compact 3.5;

• Изменения языка:– Неявная типизация локальных переменных (Implicitly Typed Local Variables);– Инциализация объектов и коллекций (Object & Collection Initializers);– Расширения библиотечных классов (Extension Methods);– Анонимные типы данных (Anonymous Types);– Лямбда-вычисления (Lambda Expressions);– Внутренний язык запросов (Query Keywords);– Автосвойства (Auto-implemented Properties);– Частичные определения методов (Partial Method Definitions);

• Встроенная поддержка WPF (редактор форм + IntelliSense);• Встроенная поддержка WCF;• Создание дистрибутивов ClickOnce для WPF Browser Applications.

Page 32: C# 3.0

Всё!Спасибо, что выдержали %)

Андрей Свердлов