Let’s Enjoy C#!

       まさる@わんくま同盟
http://blogs.wankuma.com/masaru/




   わんくま同盟 http://www.wankuma.com/
自己紹介

•   ハンドル まさる
•   性別   見ての通り♂
         SE兼プログラマ(C#がメイン)
•   職業
•   趣味
    – 楽器演奏   バスクラリネット
    – 読書
     • 小説
     •...
詳しくは…




まさるblogでググってくださいませ
        <(_ _)>




   わんくま同盟 http://www.wankuma.com/
Agenda

• C#ってどんなの?
• C#の歩み
• C#のすごいところ




      わんくま同盟 http://www.wankuma.com/
C#ってどんなの?




わんくま同盟 http://www.wankuma.com/
C#ってどんなの?

• Microsoftが.NET構想用に開発
 – 開発の中心はDelphiの祖”アンダース・ヘル
   スバーグ”
• CLSに準拠した.NET Framework用の言語
 – ECMA、JISによって言語仕様は標準化...
C#ってどんなの?

• C#の文法
 – いわゆる”中括弧言語”
   • C、Javaに似ている
   • Javaな人は取っ組みやすい


   ・・・けど、違う部分もあるので注意




          わんくま同盟 http://...
C#ってどんなの?

• Javaとの文法の違い
 – 文字列の比較
  • JavaではString.equalsメソッドを用いる
    String hoge = “fuga”;
    if ( “target”.equals(hoge...
C#ってどんなの?

• Javaとの文法の違い
 – forとforeach
   String[] strArray = new String[] {
      “hoge”, “foo”, “bar” };

   for ( Stri...
C#ってどんなの?

• Javaとの文法の違い
 – switchで使用できる型
       • Javaは整数型か列挙型
       • C#は文字列も可能
 int hoge;                string hoge;
...
C#ってどんなの?

• Javaとの文法の違い
 – メソッドのオーバーライド
     • Javaは既定でオーバーライド可能
     • C#は既定でオーバーライド不可
 class Parent {                 c...
C#ってどんなの?

• C#の型
 – 値型
   • 値自体を格納する型
   • ValueType構造体を派生した型
   • int、datetimeなど
 – 参照型
   • 値への”参照”を格納する型
   • Objectクラ...
C#ってどんなの?

• C#の型
   – 値型
               1 int a;
               2 int b;
               3 a = 1;

       1               ...
C#ってどんなの?

• C#の型
   – 参照型
               1 string a;
               2 string b;
               3 a = “hoge”;

       1   ...
C#ってどんなの?

• C#独特の仕様
 – プロパティ
  • クラスのフィールドへのアクセサ
    – Javaではgetter、setterメソッドで実現
     public class MyClass
     {
      ...
C#ってどんなの?

• C#独特の仕様
 – プロパティ
      • setのみ、getのみでwrite only、read only
 write only                       read only
 public...
C#ってどんなの?

• C#独特の仕様
 – プロパティ
  • get、setそれぞれにアクセス修飾子指定可能
   getのみ公開
   public class MyClass
   {
     private string name...
C#ってどんなの?

• C#独特の仕様
 – delegate(デリゲート):移譲
  • Cで言う関数ポインタ
  • メソッドへの”参照”を保持する型
  • 用途
    – クラスでなくメソッド単位で、ロジックを切り替えるた
    ...
C#ってどんなの?

• C#独特の仕様
 – delegate(デリゲート):移譲
delegate void MyDelegate(string s);   static void Main(string[] args)
         ...
C#ってどんなの?

• C#独特の仕様
 – event(イベント)
   • オブジェクトの内部の状態が変更を外部に通知す
     る仕組み
     – いわゆるObserverパターン
     – 前述のデリゲートを使って、ある状態...
C#ってどんなの?

• C#独特の仕様
 – event(イベント)
  public Form1()
  {
    InitializeComponent();

   this.button1.Click += Method1;
   ...
C#ってどんなの?

• C#独特の仕様
 – Attribute(属性)
   • 型、メンバにメタデータを付加する
      – 例えばシリアライズ可能なクラス
         » JavaはSerializableインターフェイス実装...
C#ってどんなの?

• C#独特の仕様
 – Attribute(属性)
   • 他には・・・
      – デザイナサポート
      – NUnitのテストクラス、メソッド
      – etc...


   • メタデータなの...
C#ってどんなの?

• C#独特の仕様
 – ポインタ
  • C、C++などと同等のもの
  • ただし、利用可能となる条件は厳しい
    – コンパイルオプション「/unsafe」の指定
    – unsafeブロック、もしくはuns...
C#ってどんなの?

• C#独特の仕様
 – ポインタ
    public void MyMethod()
     {
       unsafe
       {
         int* hoge = null;
         ...
C#の歩み




わんくま同盟 http://www.wankuma.com/
C#の歩み

• 2002年 C# 1.0
  – 記念すべき最初のバージョン
  – これまで説明したような機能が盛り込まれた




         わんくま同盟 http://www.wankuma.com/
C#の歩み

• 2003年 C# 1.2
  – .NET Framework 1.1 に合わせてバージョンア
    ップ
  – 変更箇所
    • バグフィックスが主




         わんくま同盟 http://www.wa...
C#の歩み

• 2005年 C# 2.0
  – .NET Framework 2.0 に合わせてバージョンア
    ップ
    • 様々な言語仕様が追加された
      – C#は2.0からといっても過言ではない
  – 変更箇所
 ...
C#の歩み

• C# 2.0 の新機能
 – ジェネリクス
   • クラスの内部で使用する型をパラメータで指定
   • あらゆる型を用いた共通処理を記述可能
   • おもな適用先
     – List等のコレクション




    ...
C#の歩み

• C# 2.0 の新機能
     – ジェネリクス
 非ジェネリック                                 ジェネリック
 public void Main()                    ...
C#の歩み

• C# 2.0 の新機能
 – 匿名メソッド
   • メソッドを定義せず、直接デリゲートに処理を格
     納できる
   • 匿名メソッドの内部では、外のスコープのローカ
     ル変数も使える



    つまり、ク...
C#の歩み

• C# 2.0 の新機能
       • 匿名メソッド
 コード                                         実行結果
 delegate MyDelegate(string s);    ...
C#の歩み

• C# 2.0 の新機能
 – partialクラス(部分クラス)
   • 一つのクラスの定義を複数の箇所で記述できる
   • 用途
     – デザイナ生成部分とビジネスロジックを分けて記述
     – 対象オブジェク...
C#の歩み

• C# 2.0 の新機能
     – partialクラス
 Hoge.Designer.cs                      Hoge.cs
 public class Hoge : Form           ...
C#の歩み

• C# 2.0 の新機能
 – staticクラス(静的クラス)
   • インスタンス化不可のクラス
   • staticなメンバのみ持てる
   • 利用方法
     – 算術計算など、インスタンス化不要なメソッド群を定...
C#の歩み

• C# 2.0 の新機能
 – staticクラス

    public static MyStaticClass
    {
      public static int Count;

        public st...
C#の歩み

• C# 2.0 の新機能
 – null許容型(Nullableクラス)
   • null代入が可能な値型
     – 通常の値型はnull代入不可




        わんくま同盟 http://www.wankuma...
C#の歩み

• C# 2.0 の新機能
 – null許容型
 public void Main()
 {
   int? a = null;

     int b = a *2 ?? 0; // ??:左項がnullの場合、右項を適用

...
C#の歩み

• 2008年 C# 3.0
  – .NET Framework 3.5 に合わせてバージョンア
    ップ
    • 数々の生産性が上がるような仕様が追加された
  – 変更箇所
    • 型推論
    • ラムダ式
...
C#の歩み

• C# 3.0 の新機能
 – 型推論
   • 型を指定せずに変数が書ける
   • ただし制限事項がある
     – ローカル変数のみ
     – 同時に変数の初期化を行う必要あり
     – 初期化する際、型が一意に...
C#の歩み

• C# 3.0 の新機能
     – 型推論
 public void Main()
 {
   var s = “hoge”;         // string型
   var a = 100;            //...
C#の歩み

• C# 3.0 の新機能
 – ラムダ式
   • 匿名メソッドのsyntax sugar
   • デリゲートの記述方法の一つ
     – ラムダ式という概念についてはWikipediaあたりを参照し
       てくださ...
C#の歩み

• C# 3.0 の新機能
     – ラムダ式                                 ※Rubyでの同等の記述
 public void Main()                         ...
C#の歩み

• C# 3.0 の新機能
 – 匿名型
   • スコープ内でのみ使用可能な型を定義
   • 型推論を使用した場合のみ使える




         わんくま同盟 http://www.wankuma.com/
C#の歩み

• C# 3.0 の新機能
     – 匿名型
 public void Main()
 {
   var taro = new { Name = “太郎”, Age = 27, Sex = “男” };

     Conso...
C#の歩み

• C# 3.0 の新機能
 – 自動プロパティ
   • privateフィールドを自動的に用意してくれる
   • get,setそれぞれアクセス指定可能




        わんくま同盟 http://www.wanku...
C#の歩み

• C# 3.0 の新機能
 – 自動プロパティ
      public class Employee
      {
        public string Name { get; set; }
        publi...
C#の歩み

• C# 3.0 の新機能
 – オブジェクト初期化子
   • オブジェクトのプロパティを簡単に初期化できる
     構文


 – コレクション初期化子
   • コレクションの要素を簡単に初期化できる構文




    ...
C#の歩み

• C# 3.0 の新機能
  – オブジェクト初期化子、コレクション初期化子
 public void Main()
 {
   var empList = new List<Employee> {
     new Emplo...
C#の歩み

• C# 3.0 の新機能
 – LINQ
   • 様々なオブジェクトをターゲットに、クエリ式で
     アクセスできる
      – Object
      – XML
      – SQL


     これまで紹介...
C#の歩み

• C# 3.0 の新機能
     – LINQ
 public void Main()
 {
   var emps = new List<Employee> {
     new Employee { Name = “太郎”...
C#の歩み

• 2009年? C# 4.0
  – Visual Studio 2010の発表に合わせてリリース
    予定
  – 追加される機能の予定
    • 動的型付変数
      – 動的言語のように書ける?
    • 並列...
C#のすごいところ




わんくま同盟 http://www.wankuma.com/
C#のすごいところ

• 思考→プログラムに落とし込みやすい
 – 型推論、ラムダ式、LINQなどを使うと、ロジ
   ック以外の雑多なことから解放される
• なんといってもデリゲート
 – プログラムをクラスという縛りから解放して
   くれ...
C#のすごいところ

• 実はWindows APIとの親和性が高い
 – いざとなれば、APIを直にたたくことも可能
   • P/Invokeね
 – さらにポインタも使える
 – COMとの相互運用もサポート
   • ちょっと注意が必要...
まとめ




わんくま同盟 http://www.wankuma.com/
まとめ

• C#はWindowsの現実を踏まえたごった煮言
  語(©猪俣健太郎さん)
 – 低レベルから高レベルまで幅広くカバー
• 機能は豊富だが使いやすく設計されている
 – 怖くないよ!
• 特にC# 3.0で追加された仕様群は生産性...
まとめ




しっかり使いこなして
 定時で帰りましょう
    v(^ ^)v



 わんくま同盟 http://www.wankuma.com/
おしまい!
ご静聴ありがとうございました
     <(_ _)>




わんくま同盟 http://www.wankuma.com/
参考資料

• C#の現在・過去・未来
 (わんくま同盟勉強会 東京#23 - えムナウさん)
 http://www.wankuma.com/seminar/20080809tokyo23/Default.aspx

• 解題:私がJavaか...
Upcoming SlideShare
Loading in …5
×

Lets Enjoy C#!

2,911 views

Published on

  • Be the first to comment

  • Be the first to like this

Lets Enjoy C#!

  1. 1. Let’s Enjoy C#! まさる@わんくま同盟 http://blogs.wankuma.com/masaru/ わんくま同盟 http://www.wankuma.com/
  2. 2. 自己紹介 • ハンドル まさる • 性別 見ての通り♂ SE兼プログラマ(C#がメイン) • 職業 • 趣味 – 楽器演奏 バスクラリネット – 読書 • 小説 • 技術書 • ビジネス書 わんくま同盟 http://www.wankuma.com/
  3. 3. 詳しくは… まさるblogでググってくださいませ <(_ _)> わんくま同盟 http://www.wankuma.com/
  4. 4. Agenda • C#ってどんなの? • C#の歩み • C#のすごいところ わんくま同盟 http://www.wankuma.com/
  5. 5. C#ってどんなの? わんくま同盟 http://www.wankuma.com/
  6. 6. C#ってどんなの? • Microsoftが.NET構想用に開発 – 開発の中心はDelphiの祖”アンダース・ヘル スバーグ” • CLSに準拠した.NET Framework用の言語 – ECMA、JISによって言語仕様は標準化されてい る • C/C++、Java、VB、Pascalなど、さまざま な言語の仕様を取り込んでいる わんくま同盟 http://www.wankuma.com/
  7. 7. C#ってどんなの? • C#の文法 – いわゆる”中括弧言語” • C、Javaに似ている • Javaな人は取っ組みやすい ・・・けど、違う部分もあるので注意 わんくま同盟 http://www.wankuma.com/
  8. 8. C#ってどんなの? • Javaとの文法の違い – 文字列の比較 • JavaではString.equalsメソッドを用いる String hoge = “fuga”; if ( “target”.equals(hoge) ) { System.out.println(“Hit!”); } • C#では、string型は==で比較する string hoge = “fuga”; if ( hoge == “target” ) { Console.WriteLine(“Hit!”); } わんくま同盟 http://www.wankuma.com/
  9. 9. C#ってどんなの? • Javaとの文法の違い – forとforeach String[] strArray = new String[] { “hoge”, “foo”, “bar” }; for ( String item : strArray ) { System.out.println(item); } string[] strArray = new string[] { “hoge”, “foo”, “bar” }; foreach ( string item in strArray ) { Console.WriteLine(item); } わんくま同盟 http://www.wankuma.com/
  10. 10. C#ってどんなの? • Javaとの文法の違い – switchで使用できる型 • Javaは整数型か列挙型 • C#は文字列も可能 int hoge; string hoge; switch ( hoge ) { switch ( hoge ) case 1 : { break; case “a” : break; case 2 : break; case “b” : } break; } わんくま同盟 http://www.wankuma.com/
  11. 11. C#ってどんなの? • Javaとの文法の違い – メソッドのオーバーライド • Javaは既定でオーバーライド可能 • C#は既定でオーバーライド不可 class Parent { class Parent { public void hoge() { public virtual void Hoge() { } } } } class Child extends Parent { class Child : Parent { public void hoge() { public override void hoge() { } } } } わんくま同盟 http://www.wankuma.com/
  12. 12. C#ってどんなの? • C#の型 – 値型 • 値自体を格納する型 • ValueType構造体を派生した型 • int、datetimeなど – 参照型 • 値への”参照”を格納する型 • Objectクラスを派生した型 • string、配列など わんくま同盟 http://www.wankuma.com/
  13. 13. C#ってどんなの? • C#の型 – 値型 1 int a; 2 int b; 3 a = 1; 1 2 3 a a a 1 101 101 101 b b 102 102 102 103 103 103 104 104 104 105 105 105 わんくま同盟 http://www.wankuma.com/
  14. 14. C#ってどんなの? • C#の型 – 参照型 1 string a; 2 string b; 3 a = “hoge”; 1 2 3 a a a address:104 101 101 101 b b 102 102 102 103 103 103 h 104 104 104 o 105 105 105 : わんくま同盟 http://www.wankuma.com/
  15. 15. C#ってどんなの? • C#独特の仕様 – プロパティ • クラスのフィールドへのアクセサ – Javaではgetter、setterメソッドで実現 public class MyClass { private string name; public string Name { get { return this.name; } set { this.name = value; } } } わんくま同盟 http://www.wankuma.com/
  16. 16. C#ってどんなの? • C#独特の仕様 – プロパティ • setのみ、getのみでwrite only、read only write only read only public class MyClass public class MyClass { { private string name; private string name; public string Name public string Name { { set { this.name = value; } get { return this.name; } } } } } わんくま同盟 http://www.wankuma.com/
  17. 17. C#ってどんなの? • C#独特の仕様 – プロパティ • get、setそれぞれにアクセス修飾子指定可能 getのみ公開 public class MyClass { private string name; public string Name { get { return this.name; } private set { this.name = value; } } } わんくま同盟 http://www.wankuma.com/
  18. 18. C#ってどんなの? • C#独特の仕様 – delegate(デリゲート):移譲 • Cで言う関数ポインタ • メソッドへの”参照”を保持する型 • 用途 – クラスでなくメソッド単位で、ロジックを切り替えるた め(Strategyパターン) – 後述するイベント(Observerパターン) – etc... わんくま同盟 http://www.wankuma.com/
  19. 19. C#ってどんなの? • C#独特の仕様 – delegate(デリゲート):移譲 delegate void MyDelegate(string s); static void Main(string[] args) { static void Method1(string s) MyDelegate myDelegate; { // ~ if (IsA) } { myDelegate = Method1; static void Method2(string value) } { else // ~ { } myDelegate = Method2; } myDelegate(quot;hogequot;); } わんくま同盟 http://www.wankuma.com/
  20. 20. C#ってどんなの? • C#独特の仕様 – event(イベント) • オブジェクトの内部の状態が変更を外部に通知す る仕組み – いわゆるObserverパターン – 前述のデリゲートを使って、ある状態になったとき呼び 出されるメソッドを登録する わんくま同盟 http://www.wankuma.com/
  21. 21. C#ってどんなの? • C#独特の仕様 – event(イベント) public Form1() { InitializeComponent(); this.button1.Click += Method1; this.button1.Click += Method2; } private void Method1(object sender, EventArgs e) { } private void Method1(object sender, EventArgs e) { } わんくま同盟 http://www.wankuma.com/
  22. 22. C#ってどんなの? • C#独特の仕様 – Attribute(属性) • 型、メンバにメタデータを付加する – 例えばシリアライズ可能なクラス » JavaはSerializableインターフェイス実装 » C#はSerializable属性を付加 [Serializable] public class MySerializableClass { public Hoge = “”; } わんくま同盟 http://www.wankuma.com/
  23. 23. C#ってどんなの? • C#独特の仕様 – Attribute(属性) • 他には・・・ – デザイナサポート – NUnitのテストクラス、メソッド – etc... • メタデータなので、適用範囲は無限大 – 設定した属性はリフレクションで取得可能 わんくま同盟 http://www.wankuma.com/
  24. 24. C#ってどんなの? • C#独特の仕様 – ポインタ • C、C++などと同等のもの • ただし、利用可能となる条件は厳しい – コンパイルオプション「/unsafe」の指定 – unsafeブロック、もしくはunsafeキーワードがつけられ たブロック内 わんくま同盟 http://www.wankuma.com/
  25. 25. C#ってどんなの? • C#独特の仕様 – ポインタ public void MyMethod() { unsafe { int* hoge = null; int a = 1; hoge = &a; } } わんくま同盟 http://www.wankuma.com/
  26. 26. C#の歩み わんくま同盟 http://www.wankuma.com/
  27. 27. C#の歩み • 2002年 C# 1.0 – 記念すべき最初のバージョン – これまで説明したような機能が盛り込まれた わんくま同盟 http://www.wankuma.com/
  28. 28. C#の歩み • 2003年 C# 1.2 – .NET Framework 1.1 に合わせてバージョンア ップ – 変更箇所 • バグフィックスが主 わんくま同盟 http://www.wankuma.com/
  29. 29. C#の歩み • 2005年 C# 2.0 – .NET Framework 2.0 に合わせてバージョンア ップ • 様々な言語仕様が追加された – C#は2.0からといっても過言ではない – 変更箇所 • ジェネリクス • 匿名メソッド • partialクラス • staticクラス • null許容型 わんくま同盟 http://www.wankuma.com/
  30. 30. C#の歩み • C# 2.0 の新機能 – ジェネリクス • クラスの内部で使用する型をパラメータで指定 • あらゆる型を用いた共通処理を記述可能 • おもな適用先 – List等のコレクション わんくま同盟 http://www.wankuma.com/
  31. 31. C#の歩み • C# 2.0 の新機能 – ジェネリクス 非ジェネリック ジェネリック public void Main() public void Main() { { ArrayList list = List<string> list = new ArrayList(); new List<string>(); list.Add(“hoge”); list.Add(“hoge”); list.Add(“foo”); list.Add(“foo”); list.Add(“bar”); list.Add(“bar”); // キャストが必要 // キャストが不要 string item = (string)list[1]; string item = list[1]; } } わんくま同盟 http://www.wankuma.com/
  32. 32. C#の歩み • C# 2.0 の新機能 – 匿名メソッド • メソッドを定義せず、直接デリゲートに処理を格 納できる • 匿名メソッドの内部では、外のスコープのローカ ル変数も使える つまり、クロージャ(Closure) わんくま同盟 http://www.wankuma.com/
  33. 33. C#の歩み • C# 2.0 の新機能 • 匿名メソッド コード 実行結果 delegate MyDelegate(string s); hoge public void Main() hoge { hoge int num = 5; hoge MyDelegate mydlg = delegate(string s) { hoge for ( int i = 0; i < num; i++ ) { Console.WriteLine(s); } }; mydlg(“hoge”); } わんくま同盟 http://www.wankuma.com/
  34. 34. C#の歩み • C# 2.0 の新機能 – partialクラス(部分クラス) • 一つのクラスの定義を複数の箇所で記述できる • 用途 – デザイナ生成部分とビジネスロジックを分けて記述 – 対象オブジェクトごとにコードを分けて記述 – etc... わんくま同盟 http://www.wankuma.com/
  35. 35. C#の歩み • C# 2.0 の新機能 – partialクラス Hoge.Designer.cs Hoge.cs public class Hoge : Form public partial class Hoge { { private TextBox nameTextBox = private nameTextBox_Click new TextBox(); (object sender, EventArgs e) { this.Controls.Add(nameTextBox); MessageBox.Show( nameTextBox.Text); this.nameTextBox.Click += } nameTextBox_Click; } } わんくま同盟 http://www.wankuma.com/
  36. 36. C#の歩み • C# 2.0 の新機能 – staticクラス(静的クラス) • インスタンス化不可のクラス • staticなメンバのみ持てる • 利用方法 – 算術計算など、インスタンス化不要なメソッド群を定義 する、など わんくま同盟 http://www.wankuma.com/
  37. 37. C#の歩み • C# 2.0 の新機能 – staticクラス public static MyStaticClass { public static int Count; public static void MyStaticMethod() { } } わんくま同盟 http://www.wankuma.com/
  38. 38. C#の歩み • C# 2.0 の新機能 – null許容型(Nullableクラス) • null代入が可能な値型 – 通常の値型はnull代入不可 わんくま同盟 http://www.wankuma.com/
  39. 39. C#の歩み • C# 2.0 の新機能 – null許容型 public void Main() { int? a = null; int b = a *2 ?? 0; // ??:左項がnullの場合、右項を適用 Nullable<decimal> c = null; // これでもよい } わんくま同盟 http://www.wankuma.com/
  40. 40. C#の歩み • 2008年 C# 3.0 – .NET Framework 3.5 に合わせてバージョンア ップ • 数々の生産性が上がるような仕様が追加された – 変更箇所 • 型推論 • ラムダ式 • 匿名型 • オブジェクト初期化子、コレクション初期化子 • 自動プロパティ • LINQ わんくま同盟 http://www.wankuma.com/
  41. 41. C#の歩み • C# 3.0 の新機能 – 型推論 • 型を指定せずに変数が書ける • ただし制限事項がある – ローカル変数のみ – 同時に変数の初期化を行う必要あり – 初期化する際、型が一意に定まる わんくま同盟 http://www.wankuma.com/
  42. 42. C#の歩み • C# 3.0 の新機能 – 型推論 public void Main() { var s = “hoge”; // string型 var a = 100; // int型 var f = 1.1; // double型 s = 100; // コンパイルエラー // すでに型が定まった変数に別の型の値は入れられない var dic = new Dictionary<string, List<decimal>>(); // こういう長い名前の型を左辺に指定しなくてもよくなる } わんくま同盟 http://www.wankuma.com/
  43. 43. C#の歩み • C# 3.0 の新機能 – ラムダ式 • 匿名メソッドのsyntax sugar • デリゲートの記述方法の一つ – ラムダ式という概念についてはWikipediaあたりを参照し てください(^^; ラムダ式を使うとクロージャが簡単に書 ける! わんくま同盟 http://www.wankuma.com/
  44. 44. C#の歩み • C# 3.0 の新機能 – ラムダ式 ※Rubyでの同等の記述 public void Main() coll = [ { “hoge” var list = new List<string>(); ,”foo” list.Add(“hoge”); ,”bar” ] list.Add(“foo”); list.Add(“bar”); coll.each { |s| puts “名前:” + s list.ForEach( } s => Console.WriteLine(“名前:” + s) ); } わんくま同盟 http://www.wankuma.com/
  45. 45. C#の歩み • C# 3.0 の新機能 – 匿名型 • スコープ内でのみ使用可能な型を定義 • 型推論を使用した場合のみ使える わんくま同盟 http://www.wankuma.com/
  46. 46. C#の歩み • C# 3.0 の新機能 – 匿名型 public void Main() { var taro = new { Name = “太郎”, Age = 27, Sex = “男” }; Console.WriteLine(“私の名前は{0}です。” + “年は{1}です。” + “性別は見ての通り{2}です。” ,taro.Name ,taro.Age ,taro.Sex ); } わんくま同盟 http://www.wankuma.com/
  47. 47. C#の歩み • C# 3.0 の新機能 – 自動プロパティ • privateフィールドを自動的に用意してくれる • get,setそれぞれアクセス指定可能 わんくま同盟 http://www.wankuma.com/
  48. 48. C#の歩み • C# 3.0 の新機能 – 自動プロパティ public class Employee { public string Name { get; set; } public string Organization { get; set; } } わんくま同盟 http://www.wankuma.com/
  49. 49. C#の歩み • C# 3.0 の新機能 – オブジェクト初期化子 • オブジェクトのプロパティを簡単に初期化できる 構文 – コレクション初期化子 • コレクションの要素を簡単に初期化できる構文 わんくま同盟 http://www.wankuma.com/
  50. 50. C#の歩み • C# 3.0 の新機能 – オブジェクト初期化子、コレクション初期化子 public void Main() { var empList = new List<Employee> { new Employee { Name = “太郎”, Organization = “ほげCorp.” } ,new Employee { Name = “次郎”, Organization = “ふが商店” } ,new Employee { Name = “花子”, Organization = “ぱよストア” } }; } わんくま同盟 http://www.wankuma.com/
  51. 51. C#の歩み • C# 3.0 の新機能 – LINQ • 様々なオブジェクトをターゲットに、クエリ式で アクセスできる – Object – XML – SQL これまで紹介した新機能は、 すべてLINQのためのもの わんくま同盟 http://www.wankuma.com/
  52. 52. C#の歩み • C# 3.0 の新機能 – LINQ public void Main() { var emps = new List<Employee> { new Employee { Name = “太郎”, Organization = “ほげCorp.” } ,new Employee { Name = “次郎”, Organization = “ふが商店” } ,new Employee { Name = “花子”, Organization = “ぱよストア” } }; var query = from emp in emps where emp.Name.EndWith(“郎”) select new { EmpName = emp.Name, EmpOrg = emp.Organization }; query.ForEach(emp => Console.WriteLine(emp.EmpName)); } わんくま同盟 http://www.wankuma.com/
  53. 53. C#の歩み • 2009年? C# 4.0 – Visual Studio 2010の発表に合わせてリリース 予定 – 追加される機能の予定 • 動的型付変数 – 動的言語のように書ける? • 並列処理のサポート – マルチスレッドプログラミングを簡単に 詳細は割愛! わんくま同盟 http://www.wankuma.com/
  54. 54. C#のすごいところ わんくま同盟 http://www.wankuma.com/
  55. 55. C#のすごいところ • 思考→プログラムに落とし込みやすい – 型推論、ラムダ式、LINQなどを使うと、ロジ ック以外の雑多なことから解放される • なんといってもデリゲート – プログラムをクラスという縛りから解放して くれる – ラムダ式を使えば簡単に書ける わんくま同盟 http://www.wankuma.com/
  56. 56. C#のすごいところ • 実はWindows APIとの親和性が高い – いざとなれば、APIを直にたたくことも可能 • P/Invokeね – さらにポインタも使える – COMとの相互運用もサポート • ちょっと注意が必要だけど わんくま同盟 http://www.wankuma.com/
  57. 57. まとめ わんくま同盟 http://www.wankuma.com/
  58. 58. まとめ • C#はWindowsの現実を踏まえたごった煮言 語(©猪俣健太郎さん) – 低レベルから高レベルまで幅広くカバー • 機能は豊富だが使いやすく設計されている – 怖くないよ! • 特にC# 3.0で追加された仕様群は生産性を 数倍アップさせてくれる – 可能性を秘めている・・・ わんくま同盟 http://www.wankuma.com/
  59. 59. まとめ しっかり使いこなして 定時で帰りましょう v(^ ^)v わんくま同盟 http://www.wankuma.com/
  60. 60. おしまい! ご静聴ありがとうございました <(_ _)> わんくま同盟 http://www.wankuma.com/
  61. 61. 参考資料 • C#の現在・過去・未来 (わんくま同盟勉強会 東京#23 - えムナウさん) http://www.wankuma.com/seminar/20080809tokyo23/Default.aspx • 解題:私がJavaからC#に乗り換えた10の理由 (わんくま勉強会東京 #26 LT – 猪俣健太郎さん) http://d.hatena.ne.jp/matarillo/20081116/p1 • Visual C# - MSDN Library http://msdn.microsoft.com/ja-jp/library/kx37x362(VS.80).aspx • C# - Wikipedia http://ja.wikipedia.org/wiki/C_Sharp わんくま同盟 http://www.wankuma.com/

×