C# 7・8 の復習

M
/ 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
1 von 25

Recomendados

.NET micro FrameWork for TOPPERS (.NET基礎)@基礎勉強会 von
.NET micro  FrameWork for TOPPERS  (.NET基礎)@基礎勉強会.NET micro  FrameWork for TOPPERS  (.NET基礎)@基礎勉強会
.NET micro FrameWork for TOPPERS (.NET基礎)@基礎勉強会Kiyoshi Ogawa
1.7K views31 Folien
正規表現 von
正規表現正規表現
正規表現bsdhack
2.9K views26 Folien
C++ lecture-0 von
C++ lecture-0C++ lecture-0
C++ lecture-0sunaemon
1.3K views57 Folien
[Basic 11] 文脈自由文法 / 構文解析 / 言語解析プログラミング von
[Basic 11] 文脈自由文法 / 構文解析 / 言語解析プログラミング[Basic 11] 文脈自由文法 / 構文解析 / 言語解析プログラミング
[Basic 11] 文脈自由文法 / 構文解析 / 言語解析プログラミングYuto Takei
2.7K views44 Folien
[Basic 10] 形式言語 / 字句解析 von
[Basic 10] 形式言語 / 字句解析[Basic 10] 形式言語 / 字句解析
[Basic 10] 形式言語 / 字句解析Yuto Takei
837 views20 Folien
言語処理系入門1 von
言語処理系入門1言語処理系入門1
言語処理系入門1Kenta Hattori
3.3K views17 Folien

Más contenido relacionado

Similar a C# 7・8 の復習

C#10 von
C#10C#10
C#10m ishizaki
698 views46 Folien
【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第6回 ‟文字列とオブジェクト„ von
【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第6回 ‟文字列とオブジェクト„【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第6回 ‟文字列とオブジェクト„
【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第6回 ‟文字列とオブジェクト„和弘 井之上
301 views23 Folien
Microsoft Learn で C# を学ぶとどんな感じ? von
Microsoft Learn で C# を学ぶとどんな感じ?Microsoft Learn で C# を学ぶとどんな感じ?
Microsoft Learn で C# を学ぶとどんな感じ?m ishizaki
526 views18 Folien
C# 9.0 / .NET 5.0 von
C# 9.0 / .NET 5.0C# 9.0 / .NET 5.0
C# 9.0 / .NET 5.0信之 岩永
2.6K views64 Folien
Java8から17へ von
Java8から17へJava8から17へ
Java8から17へonozaty
732 views61 Folien
TypeScript & 関数型講座 第2回 TypeScript という言語 von
TypeScript & 関数型講座 第2回 TypeScript という言語TypeScript & 関数型講座 第2回 TypeScript という言語
TypeScript & 関数型講座 第2回 TypeScript という言語gypsygypsy
310 views29 Folien

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

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

Más de m ishizaki

継承辺りのもしかしたらマイナーかもしれない C# von
継承辺りのもしかしたらマイナーかもしれない C#継承辺りのもしかしたらマイナーかもしれない C#
継承辺りのもしかしたらマイナーかもしれない C#m ishizaki
1.1K views32 Folien
継承辺りのもしかしたらマイナーかもしれない C# von
継承辺りのもしかしたらマイナーかもしれない C#継承辺りのもしかしたらマイナーかもしれない C#
継承辺りのもしかしたらマイナーかもしれない C#m ishizaki
24 views32 Folien
Visual Studio を使わず .NET する von
Visual Studio を使わず .NET するVisual Studio を使わず .NET する
Visual Studio を使わず .NET するm ishizaki
274 views76 Folien
Xamarin で良くやっていたあれを MAUI でする話 von
Xamarin で良くやっていたあれを MAUI でする話Xamarin で良くやっていたあれを MAUI でする話
Xamarin で良くやっていたあれを MAUI でする話m ishizaki
905 views61 Folien
「スタバ」する話 von
「スタバ」する話「スタバ」する話
「スタバ」する話m ishizaki
232 views59 Folien
エンジニアと「スタバ」ツイートについて von
エンジニアと「スタバ」ツイートについてエンジニアと「スタバ」ツイートについて
エンジニアと「スタバ」ツイートについてm ishizaki
199 views10 Folien

Más de m ishizaki(20)

継承辺りのもしかしたらマイナーかもしれない C# von m ishizaki
継承辺りのもしかしたらマイナーかもしれない C#継承辺りのもしかしたらマイナーかもしれない C#
継承辺りのもしかしたらマイナーかもしれない C#
m ishizaki1.1K views
継承辺りのもしかしたらマイナーかもしれない C# von m ishizaki
継承辺りのもしかしたらマイナーかもしれない C#継承辺りのもしかしたらマイナーかもしれない C#
継承辺りのもしかしたらマイナーかもしれない C#
m ishizaki24 views
Visual Studio を使わず .NET する von m ishizaki
Visual Studio を使わず .NET するVisual Studio を使わず .NET する
Visual Studio を使わず .NET する
m ishizaki274 views
Xamarin で良くやっていたあれを MAUI でする話 von m ishizaki
Xamarin で良くやっていたあれを MAUI でする話Xamarin で良くやっていたあれを MAUI でする話
Xamarin で良くやっていたあれを MAUI でする話
m ishizaki905 views
「スタバ」する話 von m ishizaki
「スタバ」する話「スタバ」する話
「スタバ」する話
m ishizaki232 views
エンジニアと「スタバ」ツイートについて von m ishizaki
エンジニアと「スタバ」ツイートについてエンジニアと「スタバ」ツイートについて
エンジニアと「スタバ」ツイートについて
m ishizaki199 views
Build 2022 / Uno Platform von m ishizaki
Build 2022 / Uno PlatformBuild 2022 / Uno Platform
Build 2022 / Uno Platform
m ishizaki130 views
7 つの Blazor von m ishizaki
7 つの Blazor7 つの Blazor
7 つの Blazor
m ishizaki408 views
C# Tokyo コミュニティ説明 202205 版 von m ishizaki
C# Tokyo コミュニティ説明 202205 版C# Tokyo コミュニティ説明 202205 版
C# Tokyo コミュニティ説明 202205 版
m ishizaki1.2K views
仮想環境に MAUI 環境を構築する話 von m ishizaki
仮想環境に MAUI 環境を構築する話仮想環境に MAUI 環境を構築する話
仮想環境に MAUI 環境を構築する話
m ishizaki428 views
モバイルディスプレイ von m ishizaki
モバイルディスプレイモバイルディスプレイ
モバイルディスプレイ
m ishizaki575 views
Windows フォームアプリ 2022 von m ishizaki
Windows フォームアプリ 2022Windows フォームアプリ 2022
Windows フォームアプリ 2022
m ishizaki707 views
C# Tokyo コミュニティについて Short 版 von m ishizaki
C# Tokyo コミュニティについて Short 版C# Tokyo コミュニティについて Short 版
C# Tokyo コミュニティについて Short 版
m ishizaki627 views
C# Tokyo コミュニティ案内 von m ishizaki
C# Tokyo コミュニティ案内C# Tokyo コミュニティ案内
C# Tokyo コミュニティ案内
m ishizaki781 views
C# Tokyo コミュニティ説明 2021/01/29 版 von m ishizaki
C# Tokyo コミュニティ説明 2021/01/29 版C# Tokyo コミュニティ説明 2021/01/29 版
C# Tokyo コミュニティ説明 2021/01/29 版
m ishizaki555 views
秋葉原 C# もくもく会 von m ishizaki
秋葉原 C# もくもく会秋葉原 C# もくもく会
秋葉原 C# もくもく会
m ishizaki183 views
C# Tokyo guide 2020/12/25 von m ishizaki
C# Tokyo guide 2020/12/25C# Tokyo guide 2020/12/25
C# Tokyo guide 2020/12/25
m ishizaki348 views
C# Tokyo コミュニティ案内 20201217 von m ishizaki
C# Tokyo コミュニティ案内 20201217C# Tokyo コミュニティ案内 20201217
C# Tokyo コミュニティ案内 20201217
m ishizaki349 views

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