Weitere ähnliche Inhalte
Ähnlich wie MlnagoyaRx02 (20)
MlnagoyaRx02
- 9. メソッドチェイン
string[]#names#=#{#"ニャル子",#"クー子",# # # #
# # #"ハス太",#"シャンタッ君",#"まひろ"#};#
IEnumerable<string>#query2#=#names#
##.Where(x#=>#x.Last()#==#‘太’)#
##.Select(x#=>#x);#
foreach#(string#name#in#query2)#{#Console.WriteLine(name);#}#
- 11. クエリ構文
string[]#names#=#{#"ニャル子",#"クー子",## # #
# # # "ハス太",#"シャンタッ君",#"まひろ"#};#
IEnumerable<string>#query#=#from#name#in#names#
##########################where#name.Last()#==#' '#
##########################select#name;#
foreach#(string#name#in#query){Console.WriteLine(name);}#
#
- 13. More
Effective!
§ LINQ
で、More
Effective
って言ったらなんだろ
う?
§ Visual
Studio
11
、Windows
8もでるよね!
§ Rx(Reactive
Extensions)
?
§ Ix
…
?
- 15. Rx
(Reactive
Extensions)
公式サイト
§ The
Reactive
Extensions
(Rx)...
§ ...is
a
library
to
compose
asynchronous
and
event-‐based
programs
§ using
observable
collections
and
LINQ-‐style
query
operators.
ì The
Reactive
Extensions
(Rx)...
ì 非同期とイベントベースプログラムを組み合わせるライブラリ
ì 観察可能なコレクションとLINQスタイルのクエリ演算子を使う
- 16. Rx
ってなんぞ?
§ Reactive
Extension
§ 非同期処理と、イベント駆動プログラムを、
observable
collection
と
LINQ
のクエリ演算子で扱
えるようにしたMSのライブラリ。
§ イベントや、時間をシーケンス(連続した列)を
して考えたものを処理していく。
§ IEnumerable<T>
ではなく、IObservable<T>
と
IObserver<T>が使われる。
- 18. Rx
(IObservable<T>,
IObserver<T>)と
今までのLINQ
(IEnumerable<T>,
IEnumrator<T>)との違い
§ IEnumerable<T>:
元からあるコレクション(集合)を
処理する
§ IObservable<T>:
イベントや、時間、非同期のものを
処理する。
§ Observable.Range
があるけど…
§ どちらも、LINQ
クエリ演算子を使える。
- 19. Rx
のコード例
§ 今回のRxのサンプルは、よくあるマウスイベント
の合成です。
var$mousemove$=$Observable.FromEventPattern<MouseEventArgs>(this,$"MouseMove")$
$$.Sample(TimeSpan.FromSeconds(2))$
$$.Merge(Observable.FromEventPattern<MouseEventArgs>(this,$"MouseDown"))$
$$.ObserveOnDispatcher()$
$$.Subscribe($
$$$$x$=> drawSomething(x),$
$$$$ex$=>$Console.Write(ex.Message),$
$$$$()$=>$Console.Write("end")$
$$);$
- 20. Rx
のコード例
§ 今回のRxのサンプルは、よくあるマウスイベント
の合成です。
var$mousemove$=$Observable.FromEventPattern<MouseEventArgs>(this,$"MouseMove")$
$$.Sample(TimeSpan.FromSeconds(2))$
実際に合成しているメソッド
$$.Merge(Observable.FromEventPattern<MouseEventArgs>(this,$"MouseDown"))$
$$.ObserveOnDispatcher()$ UIスレッドで処理をする
$$.Subscribe($
$$$$x$=> drawSomething(x),$ シーケンスが読み込まれた際のメソッド
$$$$ex$=>$Console.Write(ex.Message),$ 例外が吐かれた際に呼ばれる
$$$$()$=>$Console.Write("end")$
$$);$ シーケンスが読み込み終わった際に呼ばれる
- 21. § C#を使うときに、
LINQ(IEnumerable)
や、
Rx
(IObservable)
を使うと、
プログラミングが楽しくなりますよ!