C# 3.0 Андрей Свердлов
Эволюция языков программирования
Что хотелось бы от ЯП Мульти-парадиг-мальность Унифици-рованный доступ к данным Чтобы писалось в кайф Деклара-тивное прогр...
Что насчет  C#? C# (1.0)
C#  ( 1.0 ) <ul><li>Объектно-ориентированный язык; </li></ul><ul><li>Библиотека классов: </li></ul><ul><ul><li>Windows For...
C#  ( 1.0 ) Мульти-парадиг-мальность Унифици-рованный доступ к данным Чтобы писалось в кайф Деклара-тивное програм-мирован...
Что насчет  C#? C# (1.0) C# 2.0 Управляемый код  ( сборка мусора,  reflection, …)
C# 2.0 <ul><li>Поддержка 64-битных приложений; </li></ul><ul><li>Поддержка  Access Control List; </li></ul><ul><li>Улучшен...
C#  2 .0 Мульти-парадиг-мальность Унифици-рованный доступ к данным Чтобы писалось в кайф Деклара-тивное програм-мирование ...
Что насчет  C#? C# (1.0) C# 2.0 C# 3.0 Управляемый код  ( сборка мусора,  reflection, …) Generics  (родовое программирован...
C# 3.0 <ul><li>Изменения языка: </li></ul><ul><ul><li>Неявная типизация локальных перменных ( Implicitly Typed Local Varia...
C#  3 .0 Мульти-парадиг-мальность Унифици-рованный доступ к данным Чтобы писалось в кайф Деклара-тивное програм-мирование ...
Что насчет  C#? C# (1.0) C# 2.0 C# 3.0 Управляемый код  ( сборка мусора,  reflection, …) Generics  (родовое программирован...
C# 3.0 <ul><li>Изменения языка: </li></ul><ul><ul><li>Неявная типизация локальных переменных ( Implicitly Typed Local Vari...
Неявная типизация локальных переменных Демо №1.1
Неявная типизация локальных переменных <ul><li>Объявление типа  var ; </li></ul><ul><li>Только для локальных переменных; <...
Инциализация объектов и коллекций Демо №1.2
Инциализация объектов и коллекций <ul><li>Нужно всегда   вызывать нормальный конструктор ; </li></ul><ul><li>Коллекция – в...
Анонимные типы данных Демо №1.3
Анонимные типы данных <ul><li>Это  классы  с  public read-only  полями; </li></ul><ul><li>Обязательно использование  var; ...
Внутренний язык запросов <ul><li>Теперь можно писать запросы, например: </li></ul><ul><li>Ключевые слова  LINQ  встроены в...
Расширения библиотечных классов Демо № 2
Расширения библиотечных классов <ul><li>Можно «добавлять» методы в библиотечные классы; </li></ul><ul><li>Методы доступны ...
Автосвойства Демо № 3
Автосвойства <ul><li>Обязательно содержат и  get,  и  set ; </li></ul><ul><li>В  read-only  свойстве  set  заменяется на  ...
Частичные определения методов <ul><li>Определение:  public  partial  void Method (); </li></ul><ul><li>Реализация:  public...
C# 3.0 <ul><li>Изменения языка: </li></ul><ul><ul><li>Неявная типизация локальных переменных ( Implicitly Typed Local Vari...
LINQ <ul><li>from   id   in   source </li></ul><ul><li>{  from   id   in   source | </li></ul><ul><li>join   id   in   sou...
LINQ  и расширения <ul><li>Все выражения в запросе преобразуются в вызовы методов расширений: </li></ul><ul><ul><li>Where;...
Object Relational Designer <ul><li>Визуальный редактор классов и их отношений; </li></ul><ul><li>Позволяет привязывать объ...
C# 3.0 <ul><li>Работа с данными: </li></ul><ul><ul><li>LINQ ; </li></ul></ul><ul><ul><li>O/R Designer ; </li></ul></ul><ul...
Всё! Спасибо, что выдержали %) Андрей Свердлов
Upcoming SlideShare
Loading in …5
×

C# 3.0

2,742 views

Published on

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

0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,742
On SlideShare
0
From Embeds
0
Number of Embeds
33
Actions
Shares
0
Downloads
43
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide
  • C# 3.0

    1. 1. C# 3.0 Андрей Свердлов
    2. 2. Эволюция языков программирования
    3. 3. Что хотелось бы от ЯП Мульти-парадиг-мальность Унифици-рованный доступ к данным Чтобы писалось в кайф Деклара-тивное програм-мирование Повышение уровня абстракции Продуктивность
    4. 4. Что насчет C#? C# (1.0)
    5. 5. C# ( 1.0 ) <ul><li>Объектно-ориентированный язык; </li></ul><ul><li>Библиотека классов: </li></ul><ul><ul><li>Windows Forms – дизайн окон; </li></ul></ul><ul><ul><li>ADO.NET – доступ к данным; </li></ul></ul><ul><ul><li>ASP.NET – web- приложения; </li></ul></ul><ul><ul><li>.NET Remoting – сетевое взаимодействие; </li></ul></ul><ul><li>Делегаты и события; </li></ul><ul><li>Reflection – динамическая информация о типах данных; </li></ul><ul><li>GC – сборка мусора, автоматическое управление памятью (кучей). </li></ul>
    6. 6. C# ( 1.0 ) Мульти-парадиг-мальность Унифици-рованный доступ к данным Чтобы писалось в кайф Деклара-тивное програм-мирование Повышение уровня абстракции Продуктивность
    7. 7. Что насчет C#? C# (1.0) C# 2.0 Управляемый код ( сборка мусора, reflection, …)
    8. 8. C# 2.0 <ul><li>Поддержка 64-битных приложений; </li></ul><ul><li>Поддержка Access Control List; </li></ul><ul><li>Улучшены: </li></ul><ul><ul><li>ADO.NET – асинхронность и пользовательские типы; </li></ul></ul><ul><ul><li>ASP.NET – быстрее, выше, сильнее; </li></ul></ul><ul><ul><li>Всякие сетевые штуки ; </li></ul></ul><ul><ul><li>I/O; </li></ul></ul><ul><ul><li>… </li></ul></ul><ul><li>Generic – List<T> m_MyList; </li></ul>
    9. 9. C# 2 .0 Мульти-парадиг-мальность Унифици-рованный доступ к данным Чтобы писалось в кайф Деклара-тивное програм-мирование Повышение уровня абстракции Продуктивность
    10. 10. Что насчет C#? C# (1.0) C# 2.0 C# 3.0 Управляемый код ( сборка мусора, reflection, …) Generics (родовое программирование, статическая параметризация типов)
    11. 11. C# 3.0 <ul><li>Изменения языка: </li></ul><ul><ul><li>Неявная типизация локальных перменных ( Implicitly Typed Local Variables ); </li></ul></ul><ul><ul><li>Инциализация объектов и коллекций ( Object & Collection Initializers ); </li></ul></ul><ul><ul><li>Расширения библиотечных классов ( Extension Methods ); </li></ul></ul><ul><ul><li>Анонимные типы данных ( Anonymous Types ); </li></ul></ul><ul><ul><li>Лямбда-вычисления ( Lambda Expressions ); </li></ul></ul><ul><ul><li>Внутренний язык запросов ( Query Keywords ); </li></ul></ul><ul><ul><li>Автосвойства ( Auto-implemented Properties ); </li></ul></ul><ul><ul><li>Частичные определения методов ( Partial Method Definitions ); </li></ul></ul><ul><li>Работа с данными: </li></ul><ul><ul><li>LINQ ; </li></ul></ul><ul><ul><li>O/R Designer ; </li></ul></ul><ul><ul><li>SQL Server Compact 3.5 (только в Visual C# 2008 Express) ; </li></ul></ul><ul><li>Встроенная поддержка WPF ( редактор форм + IntelliSense); </li></ul><ul><li>Встроенная поддержка WCF; </li></ul><ul><li>Создание дистрибутивов ClickOnce для WPF Browser Applications. </li></ul>
    12. 12. C# 3 .0 Мульти-парадиг-мальность Унифици-рованный доступ к данным Чтобы писалось в кайф Деклара-тивное програм-мирование Повышение уровня абстракции Продуктивность
    13. 13. Что насчет C#? C# (1.0) C# 2.0 C# 3.0 Управляемый код ( сборка мусора, reflection, …) Generics (родовое программирование, статическая параметризация типов) Декларативное программирование Language Integrated Query
    14. 14. C# 3.0 <ul><li>Изменения языка: </li></ul><ul><ul><li>Неявная типизация локальных переменных ( Implicitly Typed Local Variables ); </li></ul></ul><ul><ul><li>Инциализация объектов и коллекций ( Object & Collection Initializers ); </li></ul></ul><ul><ul><li>Анонимные типы данных ( Anonymous Types ); </li></ul></ul><ul><ul><li>Расширения библиотечных классов ( Extension Methods ); </li></ul></ul><ul><ul><li>Внутренний язык запросов ( Query Keywords ); </li></ul></ul><ul><ul><li>Лямбда-вычисления ( Lambda Expressions ); </li></ul></ul><ul><ul><li>Автосвойства ( Auto-implemented Properties ); </li></ul></ul><ul><ul><li>Частичные определения методов ( Partial Method Definitions ); </li></ul></ul><ul><li>Работа с данными: </li></ul><ul><ul><li>LINQ ; </li></ul></ul><ul><ul><li>O/R Designer ; </li></ul></ul><ul><ul><li>SQL Server Compact 3.5 ; </li></ul></ul><ul><li>Встроенная поддержка WPF ( редактор форм + IntelliSense); </li></ul><ul><li>Встроенная поддержка WCF; </li></ul><ul><li>Создание дистрибутивов ClickOnce для WPF Browser Applications. </li></ul>
    15. 15. Неявная типизация локальных переменных Демо №1.1
    16. 16. Неявная типизация локальных переменных <ul><li>Объявление типа var ; </li></ul><ul><li>Только для локальных переменных; </li></ul><ul><li>Не является слабой или отложенной типизацией! Компилятор сам определяет наиболее подходящий тип; </li></ul><ul><li>Может использоваться внутри for, foreach, using. </li></ul>
    17. 17. Инциализация объектов и коллекций Демо №1.2
    18. 18. Инциализация объектов и коллекций <ul><li>Нужно всегда вызывать нормальный конструктор ; </li></ul><ul><li>Коллекция – все, что IEnumerable и имеет public метод Add; </li></ul><ul><li>Поля объектов инициализируются в любом порядке и количестве. </li></ul>
    19. 19. Анонимные типы данных Демо №1.3
    20. 20. Анонимные типы данных <ul><li>Это классы с public read-only полями; </li></ul><ul><li>Обязательно использование var; </li></ul><ul><li>Тип знает только компилятор – динамические типы! </li></ul><ul><li>Дальнейшее использование данных с анонимным типом только через var. </li></ul>
    21. 21. Внутренний язык запросов <ul><li>Теперь можно писать запросы, например: </li></ul><ul><li>Ключевые слова LINQ встроены в синтаксис C#. </li></ul><ul><li>О LINQ чуть позже </li></ul>var res = from x in Students where x.Age>16 select x.Name;
    22. 22. Расширения библиотечных классов Демо № 2
    23. 23. Расширения библиотечных классов <ul><li>Можно «добавлять» методы в библиотечные классы; </li></ul><ul><li>Методы доступны только как методы конкретной переменной; </li></ul><ul><li>Методы объявляются как static в static классе; </li></ul><ul><li>В аргументах обязательно указывается this < расширяемый_класс > < аргумент > </li></ul>
    24. 24. Автосвойства Демо № 3
    25. 25. Автосвойства <ul><li>Обязательно содержат и get, и set ; </li></ul><ul><li>В read-only свойстве set заменяется на private set; </li></ul><ul><li>Удобно  </li></ul>
    26. 26. Частичные определения методов <ul><li>Определение: public partial void Method (); </li></ul><ul><li>Реализация: public partial void Method () {…} ; </li></ul><ul><li>Странная ситуация - нет документации в MSDN . </li></ul>
    27. 27. C# 3.0 <ul><li>Изменения языка: </li></ul><ul><ul><li>Неявная типизация локальных переменных ( Implicitly Typed Local Variables ); </li></ul></ul><ul><ul><li>Инциализация объектов и коллекций ( Object & Collection Initializers ); </li></ul></ul><ul><ul><li>Расширения библиотечных классов ( Extension Methods ); </li></ul></ul><ul><ul><li>Анонимные типы данных ( Anonymous Types ); </li></ul></ul><ul><ul><li>Лямбда-вычисления ( Lambda Expressions ); </li></ul></ul><ul><ul><li>Внутренний язык запросов ( Query Keywords ); </li></ul></ul><ul><ul><li>Автосвойства ( Auto-implemented Properties ); </li></ul></ul><ul><ul><li>Частичные определения методов ( Partial Method Definitions ); </li></ul></ul><ul><li>Работа с данными: </li></ul><ul><ul><li>LINQ ; </li></ul></ul><ul><ul><li>O/R Designer ; </li></ul></ul><ul><ul><li>SQL Server Compact 3.5 ; </li></ul></ul><ul><li>Встроенная поддержка WPF ( редактор форм + IntelliSense); </li></ul><ul><li>Встроенная поддержка WCF; </li></ul><ul><li>Создание дистрибутивов ClickOnce для WPF Browser Applications. </li></ul>
    28. 28. LINQ <ul><li>from id in source </li></ul><ul><li>{ from id in source | </li></ul><ul><li>join id in source on expr equals expr [ into id ] | </li></ul><ul><li>let id = expr | </li></ul><ul><li>where condition | </li></ul><ul><li>orderby ordering , ordering , … } </li></ul><ul><li>select expr | group expr by key </li></ul><ul><li>[ into id query ] </li></ul>
    29. 29. LINQ и расширения <ul><li>Все выражения в запросе преобразуются в вызовы методов расширений: </li></ul><ul><ul><li>Where; </li></ul></ul><ul><ul><li>OrderBy; </li></ul></ul><ul><ul><li>Select; </li></ul></ul><ul><ul><li>GroupBy; </li></ul></ul><ul><ul><li>Join; </li></ul></ul><ul><ul><li>… </li></ul></ul>
    30. 30. Object Relational Designer <ul><li>Визуальный редактор классов и их отношений; </li></ul><ul><li>Позволяет привязывать объекты из базы данных к объектам LINQ; </li></ul><ul><li>Похож на UML , но намного беднее; </li></ul><ul><li>Наверно прикольная штука  </li></ul>
    31. 31. C# 3.0 <ul><li>Работа с данными: </li></ul><ul><ul><li>LINQ ; </li></ul></ul><ul><ul><li>O/R Designer ; </li></ul></ul><ul><ul><li>SQL Server Compact 3.5 ; </li></ul></ul><ul><li>Изменения языка: </li></ul><ul><ul><li>Неявная типизация локальных переменных ( Implicitly Typed Local Variables ); </li></ul></ul><ul><ul><li>Инциализация объектов и коллекций ( Object & Collection Initializers ); </li></ul></ul><ul><ul><li>Расширения библиотечных классов ( Extension Methods ); </li></ul></ul><ul><ul><li>Анонимные типы данных ( Anonymous Types ); </li></ul></ul><ul><ul><li>Лямбда-вычисления ( Lambda Expressions ); </li></ul></ul><ul><ul><li>Внутренний язык запросов ( Query Keywords ); </li></ul></ul><ul><ul><li>Автосвойства ( Auto-implemented Properties ); </li></ul></ul><ul><ul><li>Частичные определения методов ( Partial Method Definitions ); </li></ul></ul><ul><li>Встроенная поддержка WPF ( редактор форм + IntelliSense); </li></ul><ul><li>Встроенная поддержка WCF; </li></ul><ul><li>Создание дистрибутивов ClickOnce для WPF Browser Applications. </li></ul>
    32. 32. Всё! Спасибо, что выдержали %) Андрей Свердлов

    ×