Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

MlnagoyaRx02

570 views

Published on

  • Be the first to comment

MlnagoyaRx02

  1. 1. ML    Nagoya  2012/05/26
  2. 2. 自己紹介
  3. 3. LINQってなんぞ?
  4. 4. LINQ  で何が出来るか。
  5. 5. メソッドチェイン string[]#names#=#{#"ニャル子",#"クー子",# # # ## # #"ハス太",#"シャンタッ君",#"まひろ"#};# IEnumerable<string>#query2#=#names# ##.Where(x#=>#x.Last()#==#‘太’)# ##.Select(x#=>#x);# foreach#(string#name#in#query2)#{#Console.WriteLine(name);#}#
  6. 6. メソッドチェイン§ いつものC#の文。  § ラムダ式をよく使う。   §   (x)  =>  Console.WriteLine(x.ToString());  
  7. 7. クエリ構文string[]#names#=#{#"ニャル子",#"クー子",## # ## # # "ハス太",#"シャンタッ君",#"まひろ"#};#IEnumerable<string>#query#=#from#name#in#names###########################where#name.Last()#==# ###########################select#name;#foreach#(string#name#in#query){Console.WriteLine(name);}##
  8. 8. § 用法用量を守って使い分けましょう。
  9. 9. More  Effective! § LINQ  で、More  Effective  って言ったらなんだろ う?   § Visual  Studio  11  、Windows  8もでるよね!   § Rx(Reactive  Extensions)  ?   § Ix  …  ?  
  10. 10. 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スタイルのクエリ演算子を使う
  11. 11. Rx  ってなんぞ?§ Reactive  Extension  § 非同期処理と、イベント駆動プログラムを、 observable  collection  と  LINQ  のクエリ演算子で扱 えるようにしたMSのライブラリ。  § イベントや、時間をシーケンス(連続した列)を して考えたものを処理していく。  § IEnumerable<T>  ではなく、IObservable<T>  と IObserver<T>が使われる。  
  12. 12. どうして、Rx  があるのか§ 次期Windows  OS(Windows8)では、非同期プログ ラミングを強制させられる。  § C#  5.0  では、async  /  await  構文が追加。   § かなり、簡単に非同期処理が書ける。
  13. 13. Rx  (IObservable<T>,  IObserver<T>)と  今までのLINQ    (IEnumerable<T>,  IEnumrator<T>)との違い§ IEnumerable<T>:    元からあるコレクション(集合)を 処理する  § IObservable<T>:  イベントや、時間、非同期のものを 処理する。   §  Observable.Range  があるけど…  § どちらも、LINQ  クエリ演算子を使える。  
  14. 14. 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")$$$);$
  15. 15. 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")$$$);$ シーケンスが読み込み終わった際に呼ばれる
  16. 16. § C#を使うときに、   LINQ(IEnumerable)  や、   Rx  (IObservable)  を使うと、   プログラミングが楽しくなりますよ!  

×