Successfully reported this slideshow.
Your SlideShare is downloading. ×

C# 9 のおすすめ新機能

Ad

/ 27
C# 9 のおすすめ新機能
1
C# TOKYO オンライン LT 大会
2021年01月29日
石崎 充良

Ad

/ 27
自己紹介
石崎 充良 ( @mishi_cs )
Microsoft MVP for Developer Technologies
言語: C# XAML
活動:
・C# もくもく会 (connpass)
・C# Tokyo (con...

Ad

/ 27
座右の銘
良いアウトプットは
良い定時退社から
生まれる
3

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Loading in …3
×

Check these out next

1 of 28 Ad
1 of 28 Ad
Advertisement

More Related Content

Advertisement

C# 9 のおすすめ新機能

  1. 1. / 27 C# 9 のおすすめ新機能 1 C# TOKYO オンライン LT 大会 2021年01月29日 石崎 充良
  2. 2. / 27 自己紹介 石崎 充良 ( @mishi_cs ) Microsoft MVP for Developer Technologies 言語: C# XAML 活動: ・C# もくもく会 (connpass) ・C# Tokyo (connpass) 2
  3. 3. / 27 座右の銘 良いアウトプットは 良い定時退社から 生まれる 3
  4. 4. / 27 C# 9 4
  5. 5. / 27 C# 7・8・9 の歴史 C# リリース ターゲット フレームワーク 7 2017/03 .NET Framework 8 2019/09 .NET Core 3.0 9 2020/11 .NET 5 5
  6. 6. / 27 C# 7・8・9 の歴史 C# リリース ターゲット フレームワーク 7 2017/03 .NET Framework 8 2019/09 .NET Core 3.0 9 2020/11 .NET 5 6
  7. 7. / 27 C# 9 の新機能一覧 •レコード •init 専用セッター •最上位レベルのステートメント •パターン マッチングの拡張機能 •ターゲット型の新しい式 •ネイティブ サイズの整数 •関数ポインター •localsinit フラグの出力を抑制する •静的な匿名関数 •共変の戻り値の型 •ラムダ ディスカード パラメーター •モジュールの初期化子 •foreach ループの拡張機能 GetEnumerator サポート •ローカル関数の属性 •ターゲットにより型指定された条件式 •部分メソッドの新機能 7 https://docs.microsoft.com/ja-jp/dotnet/csharp/whats-new/csharp-9 ※順番は変えています
  8. 8. / 27 C# 9 の新機能一覧 – 分類 •レコード •init 専用セッター •最上位レベルのステートメント •パターン マッチングの拡張機能 •ターゲット型の新しい式 •ネイティブ サイズの整数 •関数ポインター •localsinit フラグの出力を抑制する •静的な匿名関数 •共変の戻り値の型 •ラムダ ディスカード パラメーター •モジュールの初期化子 •foreach ループの拡張機能 GetEnumerator サポート •ローカル関数の属性 •ターゲットにより型指定された条件式 •部分メソッドの新機能 8 https://docs.microsoft.com/ja-jp/dotnet/csharp/whats-new/csharp-9 ※順番は変えています 超! 人気の機能 話す人が多い(と思う) unsafe とか 誰もが触る機能ではない 地味だったり マイナーだったり 誰もが触る機能ではない
  9. 9. / 27 C# 9 の新機能一覧 – 今日の話 •レコード •init 専用セッター •最上位レベルのステートメント •パターン マッチングの拡張機能 •ターゲット型の新しい式 •ネイティブ サイズの整数 •関数ポインター •localsinit フラグの出力を抑制する •静的な匿名関数 •共変の戻り値の型 •ラムダ ディスカード パラメーター •モジュールの初期化子 •foreach ループの拡張機能 GetEnumerator サポート •ローカル関数の属性 •ターゲットにより型指定された条件式 •部分メソッドの新機能 9 https://docs.microsoft.com/ja-jp/dotnet/csharp/whats-new/csharp-9 ※順番は変えています 誰もが使うがちょっと地味 今日はここを話します
  10. 10. / 27 静的な匿名関数 10 •静的な匿名関数 •共変の戻り値の型 •ラムダ ディスカード パラメーター •モジュールの初期化子 •foreach ループの拡張機能 GetEnumerator サポート
  11. 11. / 27 静的な匿名関数 匿名関数 11 ラムダ式 何がうれしいのか? エラーになってくれる 11
  12. 12. / 27 共変の戻り値の型 12 •静的な匿名関数 •共変の戻り値の型 •ラムダ ディスカード パラメーター •モジュールの初期化子 •foreach ループの拡張機能 GetEnumerator サポート
  13. 13. / 27 共変の戻り値の型 (1) これまでは return の型は変えられない return の型が違っても次のコードは成立する 13
  14. 14. / 27 共変の戻り値の型 (2) これからは 14 これが書けるようになる
  15. 15. / 27 ラムダ ディスカード パラメーター 15 •静的な匿名関数 •共変の戻り値の型 •ラムダ ディスカード パラメーター •モジュールの初期化子 •foreach ループの拡張機能 GetEnumerator サポート
  16. 16. / 27 ラムダ ディスカード パラメーター return 値の破棄 16 使わない値は _ で破棄できる ラムダ式の引数でも可能に 使わない引数は _ で破棄できる いままでは _ は有効な変数名なので名前の 衝突回避に __ と書いたり _ や __ が普通に 使えたり
  17. 17. / 27 モジュールの 初期化子 17 •静的な匿名関数 •共変の戻り値の型 •ラムダ ディスカード パラメーター •モジュールの初期化子 •foreach ループの拡張機能 GetEnumerator サポート
  18. 18. / 27 モジュールの初期化子 18 モジュール側のコード アプリ側のコード ModuleInitializer 属性のついた メソッドが最初に実行される Hello World! Initialize Saitama! Saitama! 実行結果 Initialize メソッドは呼んでいない Saitama プロパティが呼ばれる前に Initialize メソッドが実行されている
  19. 19. / 27 今までは 19 ライブラリを使う際は 最初に Init メソッドを呼んで、 といったルールをユーザーに求めていたり などしていた
  20. 20. / 27 foreach ループの拡張機能 GetEnumerator サポート 20 •静的な匿名関数 •共変の戻り値の型 •ラムダ ディスカード パラメーター •モジュールの初期化子 •foreach ループの拡張機能 GetEnumerator サポート
  21. 21. / 27 コレクション初期化子 (1) こんなことを良く書くと思います 21
  22. 22. / 27 コレクション初期化子 (2) Add メソッドが呼ばれます 22 a b c 実行結果
  23. 23. / 27 拡張メソッドで Add メソッド 23 Add メソッドを持たないクラスで 拡張メソッドでも OK
  24. 24. / 27 GetEnumerator 拡張メソッド foreach できない型を foreach しようとしたときのエラー 24 foreach できない型に拡張メソッド GetEnumerator を作成 計画通り!
  25. 25. / 27 まとめ 25
  26. 26. / 27 C# 9 のおすすめ機能 26 地味ながら、使いこなすとソースコードがスマートになりミス が減ります。 ミスが減れば、残業も減って定時退社も可能です。 定時退社しましょう! •静 的 な 匿 名 関 数 •共 変 の 戻 り 値 の 型 •ラ ム ダ デ ィ ス カ ー ド パ ラ メ ー タ ー •モ ジ ュ ー ル の 初 期 化 子 •f o r e a c h ル ー プ の 拡 張 機 能 G e t E n u m e r a t o r サ ポ ー ト
  27. 27. / 27 その他の機能 ほかの機能は Web で! 27 https://rksoftware.hatenablog.com/entry/2020/11/09/024330 https://docs.microsoft.com/ja-jp/dotnet/csharp/whats-new/csharp-9
  28. 28. / 27 ありがとうございました。 28

×