SlideShare a Scribd company logo
1 of 25
/ 24
C# 7・8 の復習
1
C# TOKYO オンライン LT 大会
2020年07月29日
石崎 充良
/ 24
自己紹介
石崎 充良 ( @mishi_cs )
Microsoft MVP for Developer Technologies
言語: C# XAML
活動:
・C# もくもく会 (connpass)
・C# Tokyo (connpass)
2
/ 24
C# 7・8
3
/ 24
C# 7・8 の歴史
C# リリース ターゲット フレームワーク
7 2017/03 .NET Framework
7.1 2017/08 .NET Framework
7.2 2017/11 .NET Framework
7.3 2018/05 .NET Framework
8 2019/09 .NET Core 3.0
4
/ 24
C# 7・8 の歴史
C# リリース ターゲット フレームワーク
7 2017/03 .NET Framework
7.1 2017/08 .NET Framework
7.2 2017/11 .NET Framework
7.3 2018/05 .NET Framework
8 2019/09 .NET Core 3.0
5
/ 24
C# 新機能 文
/
式
ク
ラ
ス
構
造
体
メ
モ
リ
そ
の
他
.NET
Core
3.0
のみ
7.0 out 変数 ○
タプル ○
破棄 ○
パターン一致 ○
ref ローカル変数と戻り値 ○ ○
ローカル関数 ○
式形式のメンバーの追加 ○
throw 式 ○
一般化された async の戻り値の型 ○
数値リテラルの構文の改善 ○
7.1 async Mainメソッド ○
default リテラル式 ○
推論されたタプル要素の名前 ○
ジェネリック型パラメーターのパターン マッチ ○
7.2 安全で効率的なコードを記述するための手法 ○ ○
末尾以外の名前付き引数 ○
数値リテラルでの先頭のアンダースコア (_) ○
private protected アクセス修飾子 ○
条件付きの ref 式 ○ ○
6
C# 新機能 文
/
式
ク
ラ
ス
構
造
体
メ
モ
リ
そ
の
他
.NET
Core
3.0
のみ
7.3 ピン留めを使用せずに fixed フィールドにアクセスできます。 ○
ref ローカル変数を再割り当てできます。 ○ ○
stackalloc 配列で初期化子を使用できます。 ○
パターンをサポートする型と共に fixed ステートメントを使用できます。 ○
追加のジェネリック制約を使用できます。 ○
タプル型を使用して == と != をテストできます。 ○
式の変数をより多くの場所で使用できます。 ○
自動実装プロパティのバッキング フィールドに属性をアタッチできます。 ○
引数が in によって異なる場合のメソッド解決が改善されました。 ○
オーバーロードの解決のあいまいなケースが削減されました。 ○
8.0 読み取り専用メンバー ○
既定のインターフェイス メソッド ○ ○
パターン マッチングの拡張機能 ○
- switch 式 ○
- プロパティのパターン ○
- タプル パターン ○
- 位置指定パターン ○
using 宣言 ○
静的ローカル関数 ○
破棄可能な ref 構造体 ○
Null 許容参照型 ○
非同期ストリーム ○ ○
非同期の破棄可能 ○
インデックスと範囲 ○ ○
null 合体割り当て ○
構築されたアンマネージド型 ○ ○
入れ子になった式の stackalloc ○ ○
verbatim 補間文字列の拡張 ○
全47新機能
出典
https://docs.microsoft.com/ja-jp/dotnet/csharp/whats-new/csharp-7
https://docs.microsoft.com/ja-jp/dotnet/csharp/whats-new/csharp-7-1
https://docs.microsoft.com/ja-jp/dotnet/csharp/whats-new/csharp-7-2
https://docs.microsoft.com/ja-jp/dotnet/csharp/whats-new/csharp-7-3
https://docs.microsoft.com/ja-jp/dotnet/csharp/whats-new/csharp-8
/ 24
多い。実際多い。
C# 7~8 の新機能数 (47) > 埼玉県の市の数 (40)
7
/ 24
C# 新機能 文
/
式
ク
ラ
ス
構
造
体
メ
モ
リ
そ
の
他
.NET
Core
3.0
のみ
7.0 out 変数 ○
タプル ○
破棄 ○
パターン一致 ○
ref ローカル変数と戻り値 ○ ○
ローカル関数 ○
式形式のメンバーの追加 ○
throw 式 ○
一般化された async の戻り値の型 ○
数値リテラルの構文の改善 ○
7.1 async Mainメソッド ○
default リテラル式 ○
推論されたタプル要素の名前 ○
ジェネリック型パラメーターのパターン マッチ ○
7.2 安全で効率的なコードを記述するための手法 ○ ○
末尾以外の名前付き引数 ○
数値リテラルでの先頭のアンダースコア (_) ○
private protected アクセス修飾子 ○
条件付きの ref 式 ○ ○
8
C# 新機能 文
/
式
ク
ラ
ス
構
造
体
メ
モ
リ
そ
の
他
.NET
Core
3.0
のみ
7.3 ピン留めを使用せずに fixed フィールドにアクセスできます。 ○
ref ローカル変数を再割り当てできます。 ○ ○
stackalloc 配列で初期化子を使用できます。 ○
パターンをサポートする型と共に fixed ステートメントを使用できます。 ○
追加のジェネリック制約を使用できます。 ○
タプル型を使用して == と != をテストできます。 ○
式の変数をより多くの場所で使用できます。 ○
自動実装プロパティのバッキング フィールドに属性をアタッチできます。 ○
引数が in によって異なる場合のメソッド解決が改善されました。 ○
オーバーロードの解決のあいまいなケースが削減されました。 ○
8.0 読み取り専用メンバー ○
既定のインターフェイス メソッド ○ ○
パターン マッチングの拡張機能 ○
- switch 式 ○
- プロパティのパターン ○
- タプル パターン ○
- 位置指定パターン ○
using 宣言 ○
静的ローカル関数 ○
破棄可能な ref 構造体 ○
Null 許容参照型 ○
非同期ストリーム ○ ○
非同期の破棄可能 ○
インデックスと範囲 ○ ○
null 合体割り当て ○
構築されたアンマネージド型 ○ ○
入れ子になった式の stackalloc ○ ○
verbatim 補間文字列の拡張 ○
.NET Framework
で使えない機能を除外してみる
/ 24
C# 新機能 文
/
式
ク
ラ
ス
構
造
体
メ
モ
リ
そ
の
他
.NET
Core
3.0
のみ
7.0 out 変数 ○
タプル ○
破棄 ○
パターン一致 ○
ref ローカル変数と戻り値 ○ ○
ローカル関数 ○
式形式のメンバーの追加 ○
throw 式 ○
一般化された async の戻り値の型 ○
数値リテラルの構文の改善 ○
7.1 async Mainメソッド ○
default リテラル式 ○
推論されたタプル要素の名前 ○
ジェネリック型パラメーターのパターン マッチ ○
7.2 安全で効率的なコードを記述するための手法 ○ ○
末尾以外の名前付き引数 ○
数値リテラルでの先頭のアンダースコア (_) ○
private protected アクセス修飾子 ○
条件付きの ref 式 ○ ○
9
C# 新機能 文
/
式
ク
ラ
ス
構
造
体
メ
モ
リ
そ
の
他
.NET
Core
3.0
のみ
7.3 ピン留めを使用せずに fixed フィールドにアクセスできます。 ○
ref ローカル変数を再割り当てできます。 ○ ○
stackalloc 配列で初期化子を使用できます。 ○
パターンをサポートする型と共に fixed ステートメントを使用できます。 ○
追加のジェネリック制約を使用できます。 ○
タプル型を使用して == と != をテストできます。 ○
式の変数をより多くの場所で使用できます。 ○
自動実装プロパティのバッキング フィールドに属性をアタッチできます。 ○
引数が in によって異なる場合のメソッド解決が改善されました。 ○
オーバーロードの解決のあいまいなケースが削減されました。 ○
8.0 読み取り専用メンバー ○
既定のインターフェイス メソッド ○ ○
パターン マッチングの拡張機能 ○
- switch 式 ○
- プロパティのパターン ○
- タプル パターン ○
- 位置指定パターン ○
using 宣言 ○
静的ローカル関数 ○
破棄可能な ref 構造体 ○
Null 許容参照型 ○
非同期ストリーム ○ ○
非同期の破棄可能 ○
インデックスと範囲 ○ ○
null 合体割り当て ○
構築されたアンマネージド型 ○ ○
入れ子になった式の stackalloc ○ ○
verbatim 補間文字列の拡張 ○
構造体の機能を除外してみる
/ 24
C# 新機能 文
/
式
ク
ラ
ス
構
造
体
メ
モ
リ
そ
の
他
.NET
Core
3.0
のみ
7.0 out 変数 ○
タプル ○
破棄 ○
パターン一致 ○
ref ローカル変数と戻り値 ○ ○
ローカル関数 ○
式形式のメンバーの追加 ○
throw 式 ○
一般化された async の戻り値の型 ○
数値リテラルの構文の改善 ○
7.1 async Mainメソッド ○
default リテラル式 ○
推論されたタプル要素の名前 ○
ジェネリック型パラメーターのパターン マッチ ○
7.2 安全で効率的なコードを記述するための手法 ○ ○
末尾以外の名前付き引数 ○
数値リテラルでの先頭のアンダースコア (_) ○
private protected アクセス修飾子 ○
条件付きの ref 式 ○ ○
10
C# 新機能 文
/
式
ク
ラ
ス
構
造
体
メ
モ
リ
そ
の
他
.NET
Core
3.0
のみ
7.3 ピン留めを使用せずに fixed フィールドにアクセスできます。 ○
ref ローカル変数を再割り当てできます。 ○ ○
stackalloc 配列で初期化子を使用できます。 ○
パターンをサポートする型と共に fixed ステートメントを使用できます。 ○
追加のジェネリック制約を使用できます。 ○
タプル型を使用して == と != をテストできます。 ○
式の変数をより多くの場所で使用できます。 ○
自動実装プロパティのバッキング フィールドに属性をアタッチできます。 ○
引数が in によって異なる場合のメソッド解決が改善されました。 ○
オーバーロードの解決のあいまいなケースが削減されました。 ○
8.0 読み取り専用メンバー ○
既定のインターフェイス メソッド ○ ○
パターン マッチングの拡張機能 ○
- switch 式 ○
- プロパティのパターン ○
- タプル パターン ○
- 位置指定パターン ○
using 宣言 ○
静的ローカル関数 ○
破棄可能な ref 構造体 ○
Null 許容参照型 ○
非同期ストリーム ○ ○
非同期の破棄可能 ○
インデックスと範囲 ○ ○
null 合体割り当て ○
構築されたアンマネージド型 ○ ○
入れ子になった式の stackalloc ○ ○
verbatim 補間文字列の拡張 ○
Unsafe や値型の参照を扱う
機能を除外してみる
/ 24
C# 新機能 文
/
式
ク
ラ
ス
構
造
体
メ
モ
リ
そ
の
他
.NET
Core
3.0
のみ
7.0 out 変数 ○
タプル ○
破棄 ○
パターン一致 ○
ref ローカル変数と戻り値 ○ ○
ローカル関数 ○
式形式のメンバーの追加 ○
throw 式 ○
一般化された async の戻り値の型 ○
数値リテラルの構文の改善 ○
7.1 async Mainメソッド ○
default リテラル式 ○
推論されたタプル要素の名前 ○
ジェネリック型パラメーターのパターン マッチ ○
7.2 安全で効率的なコードを記述するための手法 ○ ○
末尾以外の名前付き引数 ○
数値リテラルでの先頭のアンダースコア (_) ○
private protected アクセス修飾子 ○
条件付きの ref 式 ○ ○
11
C# 新機能 文
/
式
ク
ラ
ス
構
造
体
メ
モ
リ
そ
の
他
.NET
Core
3.0
のみ
7.3 ピン留めを使用せずに fixed フィールドにアクセスできます。 ○
ref ローカル変数を再割り当てできます。 ○ ○
stackalloc 配列で初期化子を使用できます。 ○
パターンをサポートする型と共に fixed ステートメントを使用できます。 ○
追加のジェネリック制約を使用できます。 ○
タプル型を使用して == と != をテストできます。 ○
式の変数をより多くの場所で使用できます。 ○
自動実装プロパティのバッキング フィールドに属性をアタッチできます。 ○
引数が in によって異なる場合のメソッド解決が改善されました。 ○
オーバーロードの解決のあいまいなケースが削減されました。 ○
8.0 読み取り専用メンバー ○
既定のインターフェイス メソッド ○ ○
パターン マッチングの拡張機能 ○
- switch 式 ○
- プロパティのパターン ○
- タプル パターン ○
- 位置指定パターン ○
using 宣言 ○
静的ローカル関数 ○
破棄可能な ref 構造体 ○
Null 許容参照型 ○
非同期ストリーム ○ ○
非同期の破棄可能 ○
インデックスと範囲 ○ ○
null 合体割り当て ○
構築されたアンマネージド型 ○ ○
入れ子になった式の stackalloc ○ ○
verbatim 補間文字列の拡張 ○
コンソールアプリやライブラリ
で使える機能を除外してみる
/ 24
C# 新機能 文
/
式
ク
ラ
ス
構
造
体
メ
モ
リ
そ
の
他
.NET
Core
3.0
のみ
7.0 out 変数 ○
タプル ○
破棄 ○
パターン一致 ○
ref ローカル変数と戻り値 ○ ○
ローカル関数 ○
式形式のメンバーの追加 ○
throw 式 ○
一般化された async の戻り値の型 ○
数値リテラルの構文の改善 ○
7.1 async Mainメソッド ○
default リテラル式 ○
推論されたタプル要素の名前 ○
ジェネリック型パラメーターのパターン マッチ ○
7.2 安全で効率的なコードを記述するための手法 ○ ○
末尾以外の名前付き引数 ○
数値リテラルでの先頭のアンダースコア (_) ○
private protected アクセス修飾子 ○
条件付きの ref 式 ○ ○
12
C# 新機能 文
/
式
ク
ラ
ス
構
造
体
メ
モ
リ
そ
の
他
.NET
Core
3.0
のみ
7.3 ピン留めを使用せずに fixed フィールドにアクセスできます。 ○
ref ローカル変数を再割り当てできます。 ○ ○
stackalloc 配列で初期化子を使用できます。 ○
パターンをサポートする型と共に fixed ステートメントを使用できます。 ○
追加のジェネリック制約を使用できます。 ○
タプル型を使用して == と != をテストできます。 ○
式の変数をより多くの場所で使用できます。 ○
自動実装プロパティのバッキング フィールドに属性をアタッチできます。 ○
引数が in によって異なる場合のメソッド解決が改善されました。 ○
オーバーロードの解決のあいまいなケースが削減されました。 ○
8.0 読み取り専用メンバー ○
既定のインターフェイス メソッド ○ ○
パターン マッチングの拡張機能 ○
- switch 式 ○
- プロパティのパターン ○
- タプル パターン ○
- 位置指定パターン ○
using 宣言 ○
静的ローカル関数 ○
破棄可能な ref 構造体 ○
Null 許容参照型 ○
非同期ストリーム ○ ○
非同期の破棄可能 ○
インデックスと範囲 ○ ○
null 合体割り当て ○
構築されたアンマネージド型 ○ ○
入れ子になった式の stackalloc ○ ○
verbatim 補間文字列の拡張 ○
メソッドのオーバーロードの
解決の改善を除外してみる
/ 24
C# 新機能 文
/
式
ク
ラ
ス
構
造
体
メ
モ
リ
そ
の
他
.NET
Core
3.0
のみ
7.0 out 変数 ○
タプル ○
破棄 ○
パターン一致 ○
ref ローカル変数と戻り値 ○ ○
ローカル関数 ○
式形式のメンバーの追加 ○
throw 式 ○
一般化された async の戻り値の型 ○
数値リテラルの構文の改善 ○
7.1 async Mainメソッド ○
default リテラル式 ○
推論されたタプル要素の名前 ○
ジェネリック型パラメーターのパターン マッチ ○
7.2 安全で効率的なコードを記述するための手法 ○ ○
末尾以外の名前付き引数 ○
数値リテラルでの先頭のアンダースコア (_) ○
private protected アクセス修飾子 ○
条件付きの ref 式 ○ ○
13
C# 新機能 文
/
式
ク
ラ
ス
構
造
体
メ
モ
リ
そ
の
他
.NET
Core
3.0
のみ
7.3 ピン留めを使用せずに fixed フィールドにアクセスできます。 ○
ref ローカル変数を再割り当てできます。 ○ ○
stackalloc 配列で初期化子を使用できます。 ○
パターンをサポートする型と共に fixed ステートメントを使用できます。 ○
追加のジェネリック制約を使用できます。 ○
タプル型を使用して == と != をテストできます。 ○
式の変数をより多くの場所で使用できます。 ○
自動実装プロパティのバッキング フィールドに属性をアタッチできます。 ○
引数が in によって異なる場合のメソッド解決が改善されました。 ○
オーバーロードの解決のあいまいなケースが削減されました。 ○
8.0 読み取り専用メンバー ○
既定のインターフェイス メソッド ○ ○
パターン マッチングの拡張機能 ○
- switch 式 ○
- プロパティのパターン ○
- タプル パターン ○
- 位置指定パターン ○
using 宣言 ○
静的ローカル関数 ○
破棄可能な ref 構造体 ○
Null 許容参照型 ○
非同期ストリーム ○ ○
非同期の破棄可能 ○
インデックスと範囲 ○ ○
null 合体割り当て ○
構築されたアンマネージド型 ○ ○
入れ子になった式の stackalloc ○ ○
verbatim 補間文字列の拡張 ○
残り 29 機能
/ 24
C#7.0 の新機能
14
/ 24
out 変数
15
/ 24
タプル
16
/ 24
破棄
17
/ 24
パターン一致
18
C#8 でさらにパワーアップ!
/ 24
ローカル関数
19
[ お勧め情報! ]
C#8 でさらにパワーアップ!
static メソッドにできるように
/ 24
式形式のメンバーの追加
20
/ 24
throw 式
21
/ 24
一般化された async の戻り値の型
22
/ 24
数値リテラルの構文の改善
23
/ 24
つづきは Web で!
24
/ 24
ありがとうございました。
25

More Related Content

Similar to C# 7・8 の復習

【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第6回 ‟文字列とオブジェクト„
【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第6回 ‟文字列とオブジェクト„【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第6回 ‟文字列とオブジェクト„
【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第6回 ‟文字列とオブジェクト„和弘 井之上
 
Microsoft Learn で C# を学ぶとどんな感じ?
Microsoft Learn で C# を学ぶとどんな感じ?Microsoft Learn で C# を学ぶとどんな感じ?
Microsoft Learn で C# を学ぶとどんな感じ?m ishizaki
 
Java8から17へ
Java8から17へJava8から17へ
Java8から17へonozaty
 
TypeScript & 関数型講座 第2回 TypeScript という言語
TypeScript & 関数型講座 第2回 TypeScript という言語TypeScript & 関数型講座 第2回 TypeScript という言語
TypeScript & 関数型講座 第2回 TypeScript という言語gypsygypsy
 
【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第5回 ‟配列と構造体„
【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第5回 ‟配列と構造体„【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第5回 ‟配列と構造体„
【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第5回 ‟配列と構造体„和弘 井之上
 
C# 9 のおすすめ新機能
C# 9 のおすすめ新機能C# 9 のおすすめ新機能
C# 9 のおすすめ新機能m ishizaki
 
Essential Scala 第4章 トレイトによるデータモデリング
Essential Scala 第4章 トレイトによるデータモデリングEssential Scala 第4章 トレイトによるデータモデリング
Essential Scala 第4章 トレイトによるデータモデリングTakuya Tsuchida
 
規格書で読むC++11のスレッド
規格書で読むC++11のスレッド規格書で読むC++11のスレッド
規格書で読むC++11のスレッドKohsuke Yuasa
 
【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第2回 ‟変数と型„
【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第2回 ‟変数と型„【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第2回 ‟変数と型„
【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第2回 ‟変数と型„和弘 井之上
 
【DELPHI / C++BUILDER STARTER チュートリアルシリーズ】 シーズン2 Delphi の部 第5回 「配列 と レコード 」
【DELPHI / C++BUILDER STARTER チュートリアルシリーズ】 シーズン2 Delphi の部 第5回 「配列 と レコード 」【DELPHI / C++BUILDER STARTER チュートリアルシリーズ】 シーズン2 Delphi の部 第5回 「配列 と レコード 」
【DELPHI / C++BUILDER STARTER チュートリアルシリーズ】 シーズン2 Delphi の部 第5回 「配列 と レコード 」Kaz Aiso
 

Similar to C# 7・8 の復習 (15)

C#10
C#10C#10
C#10
 
【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第6回 ‟文字列とオブジェクト„
【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第6回 ‟文字列とオブジェクト„【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第6回 ‟文字列とオブジェクト„
【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第6回 ‟文字列とオブジェクト„
 
Microsoft Learn で C# を学ぶとどんな感じ?
Microsoft Learn で C# を学ぶとどんな感じ?Microsoft Learn で C# を学ぶとどんな感じ?
Microsoft Learn で C# を学ぶとどんな感じ?
 
C# 9.0 / .NET 5.0
C# 9.0 / .NET 5.0C# 9.0 / .NET 5.0
C# 9.0 / .NET 5.0
 
Java8から17へ
Java8から17へJava8から17へ
Java8から17へ
 
TypeScript & 関数型講座 第2回 TypeScript という言語
TypeScript & 関数型講座 第2回 TypeScript という言語TypeScript & 関数型講座 第2回 TypeScript という言語
TypeScript & 関数型講座 第2回 TypeScript という言語
 
Project coin
Project coinProject coin
Project coin
 
What is template
What is templateWhat is template
What is template
 
【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第5回 ‟配列と構造体„
【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第5回 ‟配列と構造体„【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第5回 ‟配列と構造体„
【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第5回 ‟配列と構造体„
 
C++0x総復習
C++0x総復習C++0x総復習
C++0x総復習
 
C# 9 のおすすめ新機能
C# 9 のおすすめ新機能C# 9 のおすすめ新機能
C# 9 のおすすめ新機能
 
Essential Scala 第4章 トレイトによるデータモデリング
Essential Scala 第4章 トレイトによるデータモデリングEssential Scala 第4章 トレイトによるデータモデリング
Essential Scala 第4章 トレイトによるデータモデリング
 
規格書で読むC++11のスレッド
規格書で読むC++11のスレッド規格書で読むC++11のスレッド
規格書で読むC++11のスレッド
 
【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第2回 ‟変数と型„
【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第2回 ‟変数と型„【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第2回 ‟変数と型„
【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第2回 ‟変数と型„
 
【DELPHI / C++BUILDER STARTER チュートリアルシリーズ】 シーズン2 Delphi の部 第5回 「配列 と レコード 」
【DELPHI / C++BUILDER STARTER チュートリアルシリーズ】 シーズン2 Delphi の部 第5回 「配列 と レコード 」【DELPHI / C++BUILDER STARTER チュートリアルシリーズ】 シーズン2 Delphi の部 第5回 「配列 と レコード 」
【DELPHI / C++BUILDER STARTER チュートリアルシリーズ】 シーズン2 Delphi の部 第5回 「配列 と レコード 」
 

More from m ishizaki

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

C# 7・8 の復習

  • 1. / 24 C# 7・8 の復習 1 C# TOKYO オンライン LT 大会 2020年07月29日 石崎 充良
  • 2. / 24 自己紹介 石崎 充良 ( @mishi_cs ) Microsoft MVP for Developer Technologies 言語: C# XAML 活動: ・C# もくもく会 (connpass) ・C# Tokyo (connpass) 2
  • 4. / 24 C# 7・8 の歴史 C# リリース ターゲット フレームワーク 7 2017/03 .NET Framework 7.1 2017/08 .NET Framework 7.2 2017/11 .NET Framework 7.3 2018/05 .NET Framework 8 2019/09 .NET Core 3.0 4
  • 5. / 24 C# 7・8 の歴史 C# リリース ターゲット フレームワーク 7 2017/03 .NET Framework 7.1 2017/08 .NET Framework 7.2 2017/11 .NET Framework 7.3 2018/05 .NET Framework 8 2019/09 .NET Core 3.0 5
  • 6. / 24 C# 新機能 文 / 式 ク ラ ス 構 造 体 メ モ リ そ の 他 .NET Core 3.0 のみ 7.0 out 変数 ○ タプル ○ 破棄 ○ パターン一致 ○ ref ローカル変数と戻り値 ○ ○ ローカル関数 ○ 式形式のメンバーの追加 ○ throw 式 ○ 一般化された async の戻り値の型 ○ 数値リテラルの構文の改善 ○ 7.1 async Mainメソッド ○ default リテラル式 ○ 推論されたタプル要素の名前 ○ ジェネリック型パラメーターのパターン マッチ ○ 7.2 安全で効率的なコードを記述するための手法 ○ ○ 末尾以外の名前付き引数 ○ 数値リテラルでの先頭のアンダースコア (_) ○ private protected アクセス修飾子 ○ 条件付きの ref 式 ○ ○ 6 C# 新機能 文 / 式 ク ラ ス 構 造 体 メ モ リ そ の 他 .NET Core 3.0 のみ 7.3 ピン留めを使用せずに fixed フィールドにアクセスできます。 ○ ref ローカル変数を再割り当てできます。 ○ ○ stackalloc 配列で初期化子を使用できます。 ○ パターンをサポートする型と共に fixed ステートメントを使用できます。 ○ 追加のジェネリック制約を使用できます。 ○ タプル型を使用して == と != をテストできます。 ○ 式の変数をより多くの場所で使用できます。 ○ 自動実装プロパティのバッキング フィールドに属性をアタッチできます。 ○ 引数が in によって異なる場合のメソッド解決が改善されました。 ○ オーバーロードの解決のあいまいなケースが削減されました。 ○ 8.0 読み取り専用メンバー ○ 既定のインターフェイス メソッド ○ ○ パターン マッチングの拡張機能 ○ - switch 式 ○ - プロパティのパターン ○ - タプル パターン ○ - 位置指定パターン ○ using 宣言 ○ 静的ローカル関数 ○ 破棄可能な ref 構造体 ○ Null 許容参照型 ○ 非同期ストリーム ○ ○ 非同期の破棄可能 ○ インデックスと範囲 ○ ○ null 合体割り当て ○ 構築されたアンマネージド型 ○ ○ 入れ子になった式の stackalloc ○ ○ verbatim 補間文字列の拡張 ○ 全47新機能 出典 https://docs.microsoft.com/ja-jp/dotnet/csharp/whats-new/csharp-7 https://docs.microsoft.com/ja-jp/dotnet/csharp/whats-new/csharp-7-1 https://docs.microsoft.com/ja-jp/dotnet/csharp/whats-new/csharp-7-2 https://docs.microsoft.com/ja-jp/dotnet/csharp/whats-new/csharp-7-3 https://docs.microsoft.com/ja-jp/dotnet/csharp/whats-new/csharp-8
  • 7. / 24 多い。実際多い。 C# 7~8 の新機能数 (47) > 埼玉県の市の数 (40) 7
  • 8. / 24 C# 新機能 文 / 式 ク ラ ス 構 造 体 メ モ リ そ の 他 .NET Core 3.0 のみ 7.0 out 変数 ○ タプル ○ 破棄 ○ パターン一致 ○ ref ローカル変数と戻り値 ○ ○ ローカル関数 ○ 式形式のメンバーの追加 ○ throw 式 ○ 一般化された async の戻り値の型 ○ 数値リテラルの構文の改善 ○ 7.1 async Mainメソッド ○ default リテラル式 ○ 推論されたタプル要素の名前 ○ ジェネリック型パラメーターのパターン マッチ ○ 7.2 安全で効率的なコードを記述するための手法 ○ ○ 末尾以外の名前付き引数 ○ 数値リテラルでの先頭のアンダースコア (_) ○ private protected アクセス修飾子 ○ 条件付きの ref 式 ○ ○ 8 C# 新機能 文 / 式 ク ラ ス 構 造 体 メ モ リ そ の 他 .NET Core 3.0 のみ 7.3 ピン留めを使用せずに fixed フィールドにアクセスできます。 ○ ref ローカル変数を再割り当てできます。 ○ ○ stackalloc 配列で初期化子を使用できます。 ○ パターンをサポートする型と共に fixed ステートメントを使用できます。 ○ 追加のジェネリック制約を使用できます。 ○ タプル型を使用して == と != をテストできます。 ○ 式の変数をより多くの場所で使用できます。 ○ 自動実装プロパティのバッキング フィールドに属性をアタッチできます。 ○ 引数が in によって異なる場合のメソッド解決が改善されました。 ○ オーバーロードの解決のあいまいなケースが削減されました。 ○ 8.0 読み取り専用メンバー ○ 既定のインターフェイス メソッド ○ ○ パターン マッチングの拡張機能 ○ - switch 式 ○ - プロパティのパターン ○ - タプル パターン ○ - 位置指定パターン ○ using 宣言 ○ 静的ローカル関数 ○ 破棄可能な ref 構造体 ○ Null 許容参照型 ○ 非同期ストリーム ○ ○ 非同期の破棄可能 ○ インデックスと範囲 ○ ○ null 合体割り当て ○ 構築されたアンマネージド型 ○ ○ 入れ子になった式の stackalloc ○ ○ verbatim 補間文字列の拡張 ○ .NET Framework で使えない機能を除外してみる
  • 9. / 24 C# 新機能 文 / 式 ク ラ ス 構 造 体 メ モ リ そ の 他 .NET Core 3.0 のみ 7.0 out 変数 ○ タプル ○ 破棄 ○ パターン一致 ○ ref ローカル変数と戻り値 ○ ○ ローカル関数 ○ 式形式のメンバーの追加 ○ throw 式 ○ 一般化された async の戻り値の型 ○ 数値リテラルの構文の改善 ○ 7.1 async Mainメソッド ○ default リテラル式 ○ 推論されたタプル要素の名前 ○ ジェネリック型パラメーターのパターン マッチ ○ 7.2 安全で効率的なコードを記述するための手法 ○ ○ 末尾以外の名前付き引数 ○ 数値リテラルでの先頭のアンダースコア (_) ○ private protected アクセス修飾子 ○ 条件付きの ref 式 ○ ○ 9 C# 新機能 文 / 式 ク ラ ス 構 造 体 メ モ リ そ の 他 .NET Core 3.0 のみ 7.3 ピン留めを使用せずに fixed フィールドにアクセスできます。 ○ ref ローカル変数を再割り当てできます。 ○ ○ stackalloc 配列で初期化子を使用できます。 ○ パターンをサポートする型と共に fixed ステートメントを使用できます。 ○ 追加のジェネリック制約を使用できます。 ○ タプル型を使用して == と != をテストできます。 ○ 式の変数をより多くの場所で使用できます。 ○ 自動実装プロパティのバッキング フィールドに属性をアタッチできます。 ○ 引数が in によって異なる場合のメソッド解決が改善されました。 ○ オーバーロードの解決のあいまいなケースが削減されました。 ○ 8.0 読み取り専用メンバー ○ 既定のインターフェイス メソッド ○ ○ パターン マッチングの拡張機能 ○ - switch 式 ○ - プロパティのパターン ○ - タプル パターン ○ - 位置指定パターン ○ using 宣言 ○ 静的ローカル関数 ○ 破棄可能な ref 構造体 ○ Null 許容参照型 ○ 非同期ストリーム ○ ○ 非同期の破棄可能 ○ インデックスと範囲 ○ ○ null 合体割り当て ○ 構築されたアンマネージド型 ○ ○ 入れ子になった式の stackalloc ○ ○ verbatim 補間文字列の拡張 ○ 構造体の機能を除外してみる
  • 10. / 24 C# 新機能 文 / 式 ク ラ ス 構 造 体 メ モ リ そ の 他 .NET Core 3.0 のみ 7.0 out 変数 ○ タプル ○ 破棄 ○ パターン一致 ○ ref ローカル変数と戻り値 ○ ○ ローカル関数 ○ 式形式のメンバーの追加 ○ throw 式 ○ 一般化された async の戻り値の型 ○ 数値リテラルの構文の改善 ○ 7.1 async Mainメソッド ○ default リテラル式 ○ 推論されたタプル要素の名前 ○ ジェネリック型パラメーターのパターン マッチ ○ 7.2 安全で効率的なコードを記述するための手法 ○ ○ 末尾以外の名前付き引数 ○ 数値リテラルでの先頭のアンダースコア (_) ○ private protected アクセス修飾子 ○ 条件付きの ref 式 ○ ○ 10 C# 新機能 文 / 式 ク ラ ス 構 造 体 メ モ リ そ の 他 .NET Core 3.0 のみ 7.3 ピン留めを使用せずに fixed フィールドにアクセスできます。 ○ ref ローカル変数を再割り当てできます。 ○ ○ stackalloc 配列で初期化子を使用できます。 ○ パターンをサポートする型と共に fixed ステートメントを使用できます。 ○ 追加のジェネリック制約を使用できます。 ○ タプル型を使用して == と != をテストできます。 ○ 式の変数をより多くの場所で使用できます。 ○ 自動実装プロパティのバッキング フィールドに属性をアタッチできます。 ○ 引数が in によって異なる場合のメソッド解決が改善されました。 ○ オーバーロードの解決のあいまいなケースが削減されました。 ○ 8.0 読み取り専用メンバー ○ 既定のインターフェイス メソッド ○ ○ パターン マッチングの拡張機能 ○ - switch 式 ○ - プロパティのパターン ○ - タプル パターン ○ - 位置指定パターン ○ using 宣言 ○ 静的ローカル関数 ○ 破棄可能な ref 構造体 ○ Null 許容参照型 ○ 非同期ストリーム ○ ○ 非同期の破棄可能 ○ インデックスと範囲 ○ ○ null 合体割り当て ○ 構築されたアンマネージド型 ○ ○ 入れ子になった式の stackalloc ○ ○ verbatim 補間文字列の拡張 ○ Unsafe や値型の参照を扱う 機能を除外してみる
  • 11. / 24 C# 新機能 文 / 式 ク ラ ス 構 造 体 メ モ リ そ の 他 .NET Core 3.0 のみ 7.0 out 変数 ○ タプル ○ 破棄 ○ パターン一致 ○ ref ローカル変数と戻り値 ○ ○ ローカル関数 ○ 式形式のメンバーの追加 ○ throw 式 ○ 一般化された async の戻り値の型 ○ 数値リテラルの構文の改善 ○ 7.1 async Mainメソッド ○ default リテラル式 ○ 推論されたタプル要素の名前 ○ ジェネリック型パラメーターのパターン マッチ ○ 7.2 安全で効率的なコードを記述するための手法 ○ ○ 末尾以外の名前付き引数 ○ 数値リテラルでの先頭のアンダースコア (_) ○ private protected アクセス修飾子 ○ 条件付きの ref 式 ○ ○ 11 C# 新機能 文 / 式 ク ラ ス 構 造 体 メ モ リ そ の 他 .NET Core 3.0 のみ 7.3 ピン留めを使用せずに fixed フィールドにアクセスできます。 ○ ref ローカル変数を再割り当てできます。 ○ ○ stackalloc 配列で初期化子を使用できます。 ○ パターンをサポートする型と共に fixed ステートメントを使用できます。 ○ 追加のジェネリック制約を使用できます。 ○ タプル型を使用して == と != をテストできます。 ○ 式の変数をより多くの場所で使用できます。 ○ 自動実装プロパティのバッキング フィールドに属性をアタッチできます。 ○ 引数が in によって異なる場合のメソッド解決が改善されました。 ○ オーバーロードの解決のあいまいなケースが削減されました。 ○ 8.0 読み取り専用メンバー ○ 既定のインターフェイス メソッド ○ ○ パターン マッチングの拡張機能 ○ - switch 式 ○ - プロパティのパターン ○ - タプル パターン ○ - 位置指定パターン ○ using 宣言 ○ 静的ローカル関数 ○ 破棄可能な ref 構造体 ○ Null 許容参照型 ○ 非同期ストリーム ○ ○ 非同期の破棄可能 ○ インデックスと範囲 ○ ○ null 合体割り当て ○ 構築されたアンマネージド型 ○ ○ 入れ子になった式の stackalloc ○ ○ verbatim 補間文字列の拡張 ○ コンソールアプリやライブラリ で使える機能を除外してみる
  • 12. / 24 C# 新機能 文 / 式 ク ラ ス 構 造 体 メ モ リ そ の 他 .NET Core 3.0 のみ 7.0 out 変数 ○ タプル ○ 破棄 ○ パターン一致 ○ ref ローカル変数と戻り値 ○ ○ ローカル関数 ○ 式形式のメンバーの追加 ○ throw 式 ○ 一般化された async の戻り値の型 ○ 数値リテラルの構文の改善 ○ 7.1 async Mainメソッド ○ default リテラル式 ○ 推論されたタプル要素の名前 ○ ジェネリック型パラメーターのパターン マッチ ○ 7.2 安全で効率的なコードを記述するための手法 ○ ○ 末尾以外の名前付き引数 ○ 数値リテラルでの先頭のアンダースコア (_) ○ private protected アクセス修飾子 ○ 条件付きの ref 式 ○ ○ 12 C# 新機能 文 / 式 ク ラ ス 構 造 体 メ モ リ そ の 他 .NET Core 3.0 のみ 7.3 ピン留めを使用せずに fixed フィールドにアクセスできます。 ○ ref ローカル変数を再割り当てできます。 ○ ○ stackalloc 配列で初期化子を使用できます。 ○ パターンをサポートする型と共に fixed ステートメントを使用できます。 ○ 追加のジェネリック制約を使用できます。 ○ タプル型を使用して == と != をテストできます。 ○ 式の変数をより多くの場所で使用できます。 ○ 自動実装プロパティのバッキング フィールドに属性をアタッチできます。 ○ 引数が in によって異なる場合のメソッド解決が改善されました。 ○ オーバーロードの解決のあいまいなケースが削減されました。 ○ 8.0 読み取り専用メンバー ○ 既定のインターフェイス メソッド ○ ○ パターン マッチングの拡張機能 ○ - switch 式 ○ - プロパティのパターン ○ - タプル パターン ○ - 位置指定パターン ○ using 宣言 ○ 静的ローカル関数 ○ 破棄可能な ref 構造体 ○ Null 許容参照型 ○ 非同期ストリーム ○ ○ 非同期の破棄可能 ○ インデックスと範囲 ○ ○ null 合体割り当て ○ 構築されたアンマネージド型 ○ ○ 入れ子になった式の stackalloc ○ ○ verbatim 補間文字列の拡張 ○ メソッドのオーバーロードの 解決の改善を除外してみる
  • 13. / 24 C# 新機能 文 / 式 ク ラ ス 構 造 体 メ モ リ そ の 他 .NET Core 3.0 のみ 7.0 out 変数 ○ タプル ○ 破棄 ○ パターン一致 ○ ref ローカル変数と戻り値 ○ ○ ローカル関数 ○ 式形式のメンバーの追加 ○ throw 式 ○ 一般化された async の戻り値の型 ○ 数値リテラルの構文の改善 ○ 7.1 async Mainメソッド ○ default リテラル式 ○ 推論されたタプル要素の名前 ○ ジェネリック型パラメーターのパターン マッチ ○ 7.2 安全で効率的なコードを記述するための手法 ○ ○ 末尾以外の名前付き引数 ○ 数値リテラルでの先頭のアンダースコア (_) ○ private protected アクセス修飾子 ○ 条件付きの ref 式 ○ ○ 13 C# 新機能 文 / 式 ク ラ ス 構 造 体 メ モ リ そ の 他 .NET Core 3.0 のみ 7.3 ピン留めを使用せずに fixed フィールドにアクセスできます。 ○ ref ローカル変数を再割り当てできます。 ○ ○ stackalloc 配列で初期化子を使用できます。 ○ パターンをサポートする型と共に fixed ステートメントを使用できます。 ○ 追加のジェネリック制約を使用できます。 ○ タプル型を使用して == と != をテストできます。 ○ 式の変数をより多くの場所で使用できます。 ○ 自動実装プロパティのバッキング フィールドに属性をアタッチできます。 ○ 引数が in によって異なる場合のメソッド解決が改善されました。 ○ オーバーロードの解決のあいまいなケースが削減されました。 ○ 8.0 読み取り専用メンバー ○ 既定のインターフェイス メソッド ○ ○ パターン マッチングの拡張機能 ○ - switch 式 ○ - プロパティのパターン ○ - タプル パターン ○ - 位置指定パターン ○ using 宣言 ○ 静的ローカル関数 ○ 破棄可能な ref 構造体 ○ Null 許容参照型 ○ 非同期ストリーム ○ ○ 非同期の破棄可能 ○ インデックスと範囲 ○ ○ null 合体割り当て ○ 構築されたアンマネージド型 ○ ○ 入れ子になった式の stackalloc ○ ○ verbatim 補間文字列の拡張 ○ 残り 29 機能
  • 19. / 24 ローカル関数 19 [ お勧め情報! ] C#8 でさらにパワーアップ! static メソッドにできるように
  • 22. / 24 一般化された async の戻り値の型 22