/ 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

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
  • 3.
  • 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 機能
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
    / 24 ローカル関数 19 [ お勧め情報!] C#8 でさらにパワーアップ! static メソッドにできるように
  • 20.
  • 21.
  • 22.
    / 24 一般化された asyncの戻り値の型 22
  • 23.
  • 24.
  • 25.