SlideShare a Scribd company logo
1 of 29
/ 29
C#7 の新機能
城東.NET #7 2017年04月19日
石崎 充良
1
/ 29
目的
・C# がバージョンアップして C# 7 になった。
・C# 7 で大きく 10 個の機能が追加された。
・その多くは、新しい事ができるようになるものではない。
・今まで冗長だったコードを簡潔に書けるようにするもの。
・ただし、複雑なルールもある。
・実例で詳しく見て、使いこなせるようになる。
2
/ 29
新機能の概要(1/3)
3
/ 29
新機能の概要(2/3)
4
/ 29
新機能の概要(3/3)
.NET Blog
New Features in C# 7.0
https://blogs.msdn.microsoft.com/dotnet/2017/03/09/new-features-in-c-7-0/
5
/ 29
C# 7 の新機能
'' New Features in C# 7.0(.NET Blog)より
01. Out variables
02. Pattern matching
03. Tuples
04. Deconstruction
05. Local functions
06. Literal improvements
07. Ref returns and locals
08. Generalized async return types
09. More expression bodied members
10. Throw expressions
/ 29
01. Out variables
TryParse などの結果を受け取る変数が簡潔に定義できる。
7
この変数定義が冗長
ここで引数にすると同時に定義もできる
/ 29
01. Out variables
8
if の中で宣言するが、if の後のブ
ロックの外までスコープがある
if の中が否定 (!) でも同様
失敗は 0
宣言した変数は書き換え可能
_ は値を破棄する。
Parse の可否だけが必要で
値は使わない場合に使用
/ 29
02. Pattern matching
オブジェクトが特定の型の場合、処理をする。
その際、型の評価と同時にキャスト後の変数も宣言できる。
9
null の場合
型の評価と同時に変数も宣言できる
変数のスコープは if の中のみ
否定 (!) にすると変数のスコープは if の後方の外のみ
!注意! エラー処理などを記述
/ 29
02. Pattern matching
10
型で評価、変数 c も同時に宣言
when で型だけでなく値も評価
その際、宣言した変数が使える
通常の switch と同様上から順に評価
!注意! default と null は別
null が後ろ
/ 29
03. Tuples
複数の値をひとまとめにする。メソッドの return 値に特に有効
11
複数の値を ( ) で囲んで return 値にできる
複数の値を ( ) で囲んで return できる
値の取り出しは、Item1~ 既存の Tuple<T1,~> と
あまり変わらない
各要素に名前を付けられる
名前で取り出せる
/ 29
04. Deconstruction
前述の Tuple の各要素をそのまま変数に受けてしまう機能。強力。
12
このようなタプルを返すメソッドを呼ぶ際に
要素数分の変数を定義し要素を直接受けとる
型を変数ごとに書くことも可能
既に定義済みの変数でも OK
不要な値は _ で捨てる
/ 29
04. Deconstruction
13
二つの変数の値を入れ替える
/ 29
04. Deconstruction
魔法のメソッド Deconstruct
14
out 引数を持った Deconstruct という
メソッドがあると
out 引数の組と同じタプルへ代入式で分解できる
/ 29
04. Deconstruction
15
拡張メソッドで Deconstruct を定義すれば
既存の型も分解可能
/ 29
04. Deconstruction
16
引数違いの Deconstruct は定義可能
問題なく使える
/ 29
05. Local functions
メソッド内でメソッドを定義する。
17
実際に呼び出す場所や return より後ろで定義できる
再帰処理ができる
型の宣言
変数の宣言と初期値として null の代入
=> や文末の ;
/ 29
05. Local functions
18
yield を使ったイテレータの記述に便利、
らしいです
yield を使ったイテレータの記述は
ラムダではエラー
/ 29
06. Literal improvements
数値リテラルの桁数などをわかりやすく記述できる。
19
数字の間に _ を挟める
3 桁ごとに_ を書くとわかりやすい
3 桁でなくとも好きな位置に _ を書ける
ビットパターン
4 桁ごとで分かりやすく
/ 29
07. Ref returns and locals
値型の参照を return する。ゲームなどで大きなデータを扱う場合のパフォーマンスに。
20
参照を受け取って
参照を return
引数で渡した際の変数と、return を受けた
変数が同じ参照を持っている
(どちらを変えても両方変わる)
/ 29
07. Ref returns and locals
21
配列の要素の参照を return
return 先で配列の要素を書き換えられる
return 先でも配列の要素を直接扱うので
パフォーマンスが良い、そうです
/ 29
08. Generalized async return types
NuGet から System.Threading.Tasks.Extensions の追加が必要。
async メソッド内で await の場所を通らなかった場合、Task オブジェクトを作らない
22
これまで Task を使っていた場所で
ValueTask を使うだけ
await しない場合は Task オブジェクトは作られない
メモリーにやさしい
await する場合は Task オブジェクトが作られる
使い方も Task でも ValueTask でも変わらない
/ 29
09. More expression bodied members
コンストラクター、ファイナライザー、プロパティの setter・getter、メソッドを式で
定義できる。これまでは、プロパティの getter のみ可能だった。
23
クラシック スタイル な記法
/ 29
09. More expression bodied members
24
コンストラクター
ファイナライザー
プロパティ getter・setter
メソッド
式しか書けない
/ 29
10. Throw expressions
式として Exception の throw が書ける。
25
null 合体演算子と組み合わせて
null のチェックに
前述のメソッドを式で定義する機能と
組み合わせて未実装メソッドをシンプルに
/ 29
10. Throw expressions
26
モダン スタイル
レトロ スタイル
/ 29
まとめ
27
/ 29
まとめ
・C# 7 では、簡潔に書ける機能が多く追加されました。
・簡潔 = プログラマの意図がそのままコードに表現できる。
・つまり、読みやすく、書きやすい。メンテナンスも容易で安全。
・なによりキーボードをたたく回数が減る。楽。
C# 7 を使いましょう!
28
/ 29
END
29

More Related Content

Similar to C#7の新機能

CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~
CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~
CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~
Yuki Ando
 
dstn交流会_data_spider 3.0最新情報とデモ
dstn交流会_data_spider 3.0最新情報とデモdstn交流会_data_spider 3.0最新情報とデモ
dstn交流会_data_spider 3.0最新情報とデモ
dstn
 

Similar to C#7の新機能 (20)

.NETラボ2021年10月 .NETの過去と現在
.NETラボ2021年10月 .NETの過去と現在.NETラボ2021年10月 .NETの過去と現在
.NETラボ2021年10月 .NETの過去と現在
 
The Twelve-Factor (A|M)pp with C#
The Twelve-Factor (A|M)pp with C#The Twelve-Factor (A|M)pp with C#
The Twelve-Factor (A|M)pp with C#
 
今から始める、Windows 10&新.NETへの移行戦略
今から始める、Windows 10&新.NETへの移行戦略今から始める、Windows 10&新.NETへの移行戦略
今から始める、Windows 10&新.NETへの移行戦略
 
今から始める、Windows 10&新.NETへの移行戦略
今から始める、Windows 10&新.NETへの移行戦略今から始める、Windows 10&新.NETへの移行戦略
今から始める、Windows 10&新.NETへの移行戦略
 
Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(DevNet編)
Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(DevNet編)Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(DevNet編)
Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(DevNet編)
 
.NET 7 での ASP.NET Core Blazor の新機能ピックアップ
.NET 7 での ASP.NET Core Blazor の新機能ピックアップ.NET 7 での ASP.NET Core Blazor の新機能ピックアップ
.NET 7 での ASP.NET Core Blazor の新機能ピックアップ
 
密着! nibohsiデプロイ 13:00-13:05 - railsアプリのデプロイ事例 -
密着! nibohsiデプロイ 13:00-13:05 - railsアプリのデプロイ事例 -密着! nibohsiデプロイ 13:00-13:05 - railsアプリのデプロイ事例 -
密着! nibohsiデプロイ 13:00-13:05 - railsアプリのデプロイ事例 -
 
5分で学ぶC# 6
5分で学ぶC# 65分で学ぶC# 6
5分で学ぶC# 6
 
新しい Visual Studio & .NET と新時代のアーキテクチャ
新しい Visual Studio & .NET と新時代のアーキテクチャ新しい Visual Studio & .NET と新時代のアーキテクチャ
新しい Visual Studio & .NET と新時代のアーキテクチャ
 
デモで楽しむ Visual Studio 2022 & .NET 6 最新アップデート
デモで楽しむ Visual Studio 2022 & .NET 6 最新アップデートデモで楽しむ Visual Studio 2022 & .NET 6 最新アップデート
デモで楽しむ Visual Studio 2022 & .NET 6 最新アップデート
 
ASP.NET Core の ​ パフォーマンスを支える ​ I/O Pipeline と Channel
ASP.NET Core の ​ パフォーマンスを支える ​ I/O Pipeline と ChannelASP.NET Core の ​ パフォーマンスを支える ​ I/O Pipeline と Channel
ASP.NET Core の ​ パフォーマンスを支える ​ I/O Pipeline と Channel
 
ルビコンペレストロイカ〜RubyOnRailsにおけるCI改革〜
ルビコンペレストロイカ〜RubyOnRailsにおけるCI改革〜ルビコンペレストロイカ〜RubyOnRailsにおけるCI改革〜
ルビコンペレストロイカ〜RubyOnRailsにおけるCI改革〜
 
Zマイスターとの新たな価値探求 DB2
Zマイスターとの新たな価値探求 DB2Zマイスターとの新たな価値探求 DB2
Zマイスターとの新たな価値探求 DB2
 
CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~
CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~
CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~
 
C# 9 のおすすめ新機能
C# 9 のおすすめ新機能C# 9 のおすすめ新機能
C# 9 のおすすめ新機能
 
dstn交流会_data_spider 3.0最新情報とデモ
dstn交流会_data_spider 3.0最新情報とデモdstn交流会_data_spider 3.0最新情報とデモ
dstn交流会_data_spider 3.0最新情報とデモ
 
運用管理者のための「開発者からみたDevOps」 - Visual Studio 2015 新機能から考える開発者の取り組み
運用管理者のための「開発者からみたDevOps」 - Visual Studio 2015 新機能から考える開発者の取り組み運用管理者のための「開発者からみたDevOps」 - Visual Studio 2015 新機能から考える開発者の取り組み
運用管理者のための「開発者からみたDevOps」 - Visual Studio 2015 新機能から考える開発者の取り組み
 
DevOps with GitLabで始める簡単DevOps
DevOps with GitLabで始める簡単DevOpsDevOps with GitLabで始める簡単DevOps
DevOps with GitLabで始める簡単DevOps
 
Desktop app dev strategy for .net core 3.0
Desktop app dev strategy for .net core 3.0Desktop app dev strategy for .net core 3.0
Desktop app dev strategy for .net core 3.0
 
Ansible 2.8 アップデート情報 -機能追加と注意点-
Ansible 2.8 アップデート情報 -機能追加と注意点-Ansible 2.8 アップデート情報 -機能追加と注意点-
Ansible 2.8 アップデート情報 -機能追加と注意点-
 

More from m ishizaki

More from m ishizaki (20)

継承辺りのもしかしたらマイナーかもしれない C#
継承辺りのもしかしたらマイナーかもしれない C#継承辺りのもしかしたらマイナーかもしれない C#
継承辺りのもしかしたらマイナーかもしれない C#
 
継承辺りのもしかしたらマイナーかもしれない C#
継承辺りのもしかしたらマイナーかもしれない C#継承辺りのもしかしたらマイナーかもしれない C#
継承辺りのもしかしたらマイナーかもしれない C#
 
Visual Studio を使わず .NET する
Visual Studio を使わず .NET するVisual Studio を使わず .NET する
Visual Studio を使わず .NET する
 
Xamarin で良くやっていたあれを MAUI でする話
Xamarin で良くやっていたあれを MAUI でする話Xamarin で良くやっていたあれを MAUI でする話
Xamarin で良くやっていたあれを MAUI でする話
 
「スタバ」する話
「スタバ」する話「スタバ」する話
「スタバ」する話
 
エンジニアと「スタバ」ツイートについて
エンジニアと「スタバ」ツイートについてエンジニアと「スタバ」ツイートについて
エンジニアと「スタバ」ツイートについて
 
Build 2022 / Uno Platform
Build 2022 / Uno PlatformBuild 2022 / Uno Platform
Build 2022 / Uno Platform
 
7 つの Blazor
7 つの Blazor7 つの Blazor
7 つの Blazor
 
C# Tokyo コミュニティ説明 202205 版
C# Tokyo コミュニティ説明 202205 版C# Tokyo コミュニティ説明 202205 版
C# Tokyo コミュニティ説明 202205 版
 
仮想環境に MAUI 環境を構築する話
仮想環境に MAUI 環境を構築する話仮想環境に MAUI 環境を構築する話
仮想環境に MAUI 環境を構築する話
 
2022 抱負
2022 抱負2022 抱負
2022 抱負
 
モバイルディスプレイ
モバイルディスプレイモバイルディスプレイ
モバイルディスプレイ
 
Windows フォームアプリ 2022
Windows フォームアプリ 2022Windows フォームアプリ 2022
Windows フォームアプリ 2022
 
dotnet tool
dotnet tooldotnet tool
dotnet tool
 
C#10
C#10C#10
C#10
 
C# Tokyo コミュニティについて Short 版
C# Tokyo コミュニティについて Short 版C# Tokyo コミュニティについて Short 版
C# Tokyo コミュニティについて Short 版
 
C# Tokyo コミュニティ案内
C# Tokyo コミュニティ案内C# Tokyo コミュニティ案内
C# Tokyo コミュニティ案内
 
C# Tokyo コミュニティ説明 2021/01/29 版
C# Tokyo コミュニティ説明 2021/01/29 版C# Tokyo コミュニティ説明 2021/01/29 版
C# Tokyo コミュニティ説明 2021/01/29 版
 
秋葉原 C# もくもく会
秋葉原 C# もくもく会秋葉原 C# もくもく会
秋葉原 C# もくもく会
 
C# Tokyo guide 2020/12/25
C# Tokyo guide 2020/12/25C# Tokyo guide 2020/12/25
C# Tokyo guide 2020/12/25
 

Recently uploaded

Recently uploaded (11)

NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 

C#7の新機能

  • 1. / 29 C#7 の新機能 城東.NET #7 2017年04月19日 石崎 充良 1
  • 2. / 29 目的 ・C# がバージョンアップして C# 7 になった。 ・C# 7 で大きく 10 個の機能が追加された。 ・その多くは、新しい事ができるようになるものではない。 ・今まで冗長だったコードを簡潔に書けるようにするもの。 ・ただし、複雑なルールもある。 ・実例で詳しく見て、使いこなせるようになる。 2
  • 5. / 29 新機能の概要(3/3) .NET Blog New Features in C# 7.0 https://blogs.msdn.microsoft.com/dotnet/2017/03/09/new-features-in-c-7-0/ 5
  • 6. / 29 C# 7 の新機能 '' New Features in C# 7.0(.NET Blog)より 01. Out variables 02. Pattern matching 03. Tuples 04. Deconstruction 05. Local functions 06. Literal improvements 07. Ref returns and locals 08. Generalized async return types 09. More expression bodied members 10. Throw expressions
  • 7. / 29 01. Out variables TryParse などの結果を受け取る変数が簡潔に定義できる。 7 この変数定義が冗長 ここで引数にすると同時に定義もできる
  • 8. / 29 01. Out variables 8 if の中で宣言するが、if の後のブ ロックの外までスコープがある if の中が否定 (!) でも同様 失敗は 0 宣言した変数は書き換え可能 _ は値を破棄する。 Parse の可否だけが必要で 値は使わない場合に使用
  • 9. / 29 02. Pattern matching オブジェクトが特定の型の場合、処理をする。 その際、型の評価と同時にキャスト後の変数も宣言できる。 9 null の場合 型の評価と同時に変数も宣言できる 変数のスコープは if の中のみ 否定 (!) にすると変数のスコープは if の後方の外のみ !注意! エラー処理などを記述
  • 10. / 29 02. Pattern matching 10 型で評価、変数 c も同時に宣言 when で型だけでなく値も評価 その際、宣言した変数が使える 通常の switch と同様上から順に評価 !注意! default と null は別 null が後ろ
  • 11. / 29 03. Tuples 複数の値をひとまとめにする。メソッドの return 値に特に有効 11 複数の値を ( ) で囲んで return 値にできる 複数の値を ( ) で囲んで return できる 値の取り出しは、Item1~ 既存の Tuple<T1,~> と あまり変わらない 各要素に名前を付けられる 名前で取り出せる
  • 12. / 29 04. Deconstruction 前述の Tuple の各要素をそのまま変数に受けてしまう機能。強力。 12 このようなタプルを返すメソッドを呼ぶ際に 要素数分の変数を定義し要素を直接受けとる 型を変数ごとに書くことも可能 既に定義済みの変数でも OK 不要な値は _ で捨てる
  • 14. / 29 04. Deconstruction 魔法のメソッド Deconstruct 14 out 引数を持った Deconstruct という メソッドがあると out 引数の組と同じタプルへ代入式で分解できる
  • 15. / 29 04. Deconstruction 15 拡張メソッドで Deconstruct を定義すれば 既存の型も分解可能
  • 16. / 29 04. Deconstruction 16 引数違いの Deconstruct は定義可能 問題なく使える
  • 17. / 29 05. Local functions メソッド内でメソッドを定義する。 17 実際に呼び出す場所や return より後ろで定義できる 再帰処理ができる 型の宣言 変数の宣言と初期値として null の代入 => や文末の ;
  • 18. / 29 05. Local functions 18 yield を使ったイテレータの記述に便利、 らしいです yield を使ったイテレータの記述は ラムダではエラー
  • 19. / 29 06. Literal improvements 数値リテラルの桁数などをわかりやすく記述できる。 19 数字の間に _ を挟める 3 桁ごとに_ を書くとわかりやすい 3 桁でなくとも好きな位置に _ を書ける ビットパターン 4 桁ごとで分かりやすく
  • 20. / 29 07. Ref returns and locals 値型の参照を return する。ゲームなどで大きなデータを扱う場合のパフォーマンスに。 20 参照を受け取って 参照を return 引数で渡した際の変数と、return を受けた 変数が同じ参照を持っている (どちらを変えても両方変わる)
  • 21. / 29 07. Ref returns and locals 21 配列の要素の参照を return return 先で配列の要素を書き換えられる return 先でも配列の要素を直接扱うので パフォーマンスが良い、そうです
  • 22. / 29 08. Generalized async return types NuGet から System.Threading.Tasks.Extensions の追加が必要。 async メソッド内で await の場所を通らなかった場合、Task オブジェクトを作らない 22 これまで Task を使っていた場所で ValueTask を使うだけ await しない場合は Task オブジェクトは作られない メモリーにやさしい await する場合は Task オブジェクトが作られる 使い方も Task でも ValueTask でも変わらない
  • 23. / 29 09. More expression bodied members コンストラクター、ファイナライザー、プロパティの setter・getter、メソッドを式で 定義できる。これまでは、プロパティの getter のみ可能だった。 23 クラシック スタイル な記法
  • 24. / 29 09. More expression bodied members 24 コンストラクター ファイナライザー プロパティ getter・setter メソッド 式しか書けない
  • 25. / 29 10. Throw expressions 式として Exception の throw が書ける。 25 null 合体演算子と組み合わせて null のチェックに 前述のメソッドを式で定義する機能と 組み合わせて未実装メソッドをシンプルに
  • 26. / 29 10. Throw expressions 26 モダン スタイル レトロ スタイル
  • 28. / 29 まとめ ・C# 7 では、簡潔に書ける機能が多く追加されました。 ・簡潔 = プログラマの意図がそのままコードに表現できる。 ・つまり、読みやすく、書きやすい。メンテナンスも容易で安全。 ・なによりキーボードをたたく回数が減る。楽。 C# 7 を使いましょう! 28