c#5 what's new?

21
Обзор ключевых возможностей The C# Programming Language What’s new in C# 5.0 ? Lesson 1

Upload: oleg-kulygin

Post on 12-Jul-2015

178 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: C#5 What's new?

Обзор ключевых возможностей

The C# Programming Language

What’s new in C# 5.0 ?

Lesson 1

Page 2: C#5 What's new?

2

Семинар «What’s new in C# 5.0 ?»

Добрый день!

• Инструктор: Олег Кулыгинwww.linkedin.com/in/kulygin

Page 3: C#5 What's new?

3

C# 5.0 - What’s new?

Нововведения

С# 2 = Generics, LambdaС# 3 = var, LINQC# 4 = dynamic, TPLC# 5 = Async

Page 4: C#5 What's new?

4

C# 5.0 - What’s new?

Синхронность: проблемы

private void GetButtonClick(object sender, RoutedEventArgs e){

var req = (HttpWebRequest) WebRequest.Create("http://microsoft.com/");

………

var resp = (HttpWebResponse) req.GetResponse();

dataTextBox.Text += resp.Headers.ToString();}

Page 5: C#5 What's new?

5

C# 5.0 - What’s new?

Синхронность: проблемы

Вызывающий поток блокируется, до завершения длительной операции

Page 6: C#5 What's new?

6

C# 5.0 - What’s new?

Асинхронная модель до C# 5

var req = (HttpWebRequest)WebRequest.Create("http://www.google.com");req.Method = "GET";req.BeginGetResponse(

(asyncResult) =>{

var resp = (HttpWebResponse)req.EndGetResponse(asyncResult);

string headersText = resp.Headers.ToString();dataTextBox.Text += headersText;

},null);

Page 7: C#5 What's new?

7

C# 5.0 - What’s new?

Асинхронная модель: Обновление UI

Попытка обновления UI из другого потока

Page 8: C#5 What's new?

8

C# 5.0 - What’s new?

Асинхронная модель: Обновление UI

Обновление UI из другого потока через SynchronizationContext

var sync = SynchronizationContext.Current;

req.BeginGetResponse(asyncResult =>

{var resp = (HttpWebResponse) req.EndGetResponse(asyncResult);sync.Post(

delegate { // ОБНОВЛЕНИЕ UI }, null);

,null);};

Page 9: C#5 What's new?

9

C# 5.0 - What’s new?

Async & Await

async void getButton_Click(object sender, RoutedEventArgs e){

var w = new WebClient();string txt = await w.DownloadStringTaskAsync(“...");dataTextBox.Text = txt;

}

Ключевое слово async указывает компилятору, чтометод, является асинхронным.

await указывает компилятору, что в этой точке необходимо дождаться окончания асинхронной операции(при этом управление возвращается вызвавшему методу).

Page 10: C#5 What's new?

10

C# 5.0 - What’s new?

Async & Await: Асинхронная простота

Page 11: C#5 What's new?

11

C# 5.0 - What’s new?

Async & Await: Исключения

Удобная обработка исключений

Исключения «выбрасываются» в месте вызоваасинхронной операции, а не Callback-метода!

Page 12: C#5 What's new?

12

C# 5.0 - What’s new?

Асинхронность и Многопоточность

var wс1 = new WebClient();var wс2 = new WebClient();

Task<string> task1 = wc1.DownloadStringTaskAsync(url1); Task<string> task2 = wc2.DownloadStringTaskAsync(url2);

…string[] results = await Task.WhenAll(task1,task2);

Task.WhenAll() , Task.WhenAny() .

Page 13: C#5 What's new?

13

C# 5.0 - What’s new?

Caller Information

Появилась возможность, получить информацию о методе, который произвел вызов.

using System.Runtime.CompilerServices;

Page 14: C#5 What's new?

14

C# 5.0 - What’s new?

Caller Information

Возможность, получить информацию о методе, которыйпроизвел вызов.

using System.Runtime.CompilerServices;

Page 15: C#5 What's new?

15

C# 5.0 - What’s new?

Замыкания на переменных цикла

var actions = new List<Action>();

foreach (var i in Enumerable.Range(1, 3))actions.Add(() => Console.WriteLine(i));

foreach (var action in actions) action.Invoke();

C# 5.0 C# 4.0

Page 16: C#5 What's new?

16

C# 5.0 - What’s new?

Замыкания на переменных цикла

class Closure { public int i; }

Closure

Int32 i = 3

C# 5

Page 17: C#5 What's new?

17

C# 5.0 - What’s new?

Замыкания на переменных цикла

class Closure { public int i; }

Closure

Int32 i = 3

C# 5

Page 18: C#5 What's new?

Q&A

18

Page 19: C#5 What's new?

ПРОВЕРКА ЗНАНИЙ

TestProvider обеспечивает надежную и объективную оценку технических знаний и опыта работы IT-специалиста с программными продуктами Microsoft.

19

Перейти к тестированию www.TestProvider.com

Тестирование IT-специалистов

Подтвердите ваш практический опыт работы с технологиями Microsoft, получив сертификацию, соответствующую той работе, которую вы выполняете сейчас или желаете получить в будущем.

Сертификация IT-специалистов

Компании Microsoft, CyberBionic Systematics и Intel на базе портала TestProvider компании CyberBionic Systematics с использованиемплатформы Microsoft Azure совместно с Министерством науки и образования Украины проводят Всеукраинское дистанционноемониторинговое исследование уровня сформированности у выпускников учебных заведений навыков использованияинформационно-коммуникативных технологий в практической деятельности.

Page 20: C#5 What's new?

КУРС: С# Professional

Дорогие студенты школы CyberBionic Systematics,

Курс “C# для профессионалов” включает темы, которые излагаются в моей книге«CLR via C#» и учит, как работает CLR, показывая вам как строить приложения иповторно используемые компоненты для .NET Framework. Этот курс непредназначен для начинающих программистов; вам необходимо базовоепонимание Объектно-Ориентированного Программирования и опыт работы сязыком C# (а не только элементарное понимание синтаксиса).Я считаю, что вы найдете много информации о свойствах CLR и о том какиспользовать современные методы программирования в школе CyberBionicSystematics.

20

Описание курса:Курс дает возможность глубже освоить возможности языкаC# и изучить основные библиотеки платформы .NETFramework. Курс поможет освоить возможности языка,которые используются при профессиональномпроектировании и разработке программного обеспечения.Курс будет полезен программистам с опытомпрограммирования на C#.

Длительность:40 часов/20 дней.

Курс рекомендован

Джеффри Рихтером

Желаю вам всего самого наилучшего в вашей карьере,

Джеффри Рихтер, автор книги «CLR via C#»

Узнать более подробно о курсе на сайте: www.edu.cbsystematics.com

Page 21: C#5 What's new?

21