SlideShare uma empresa Scribd logo
1 de 46
/ 46
C# 10 のおすすめ新機能
1
【オンライン】VISUAL STUDIO 2022 LAUNCH 記念 C# TOKYO イベント
2021年11月19日
石崎 充良
/ 46
自己紹介
石崎 充良 ( @mishi_cs )
C# Tokyo コミュニティ管理メンバー
GitHub:
https://github.com/m-ishizaki
blog:
https://rksoftware.hatenablog.com/
2
/ 46
C# 10
3
/ 46
C# 7・8・9・10 の歴史
C# リリース ターゲット フレームワーク
7 2017/03 .NET Framework
8 2019/09 .NET Core 3.0
9 2020/11 .NET 5
10 2021/11 .NET 6
4
/ 46
C# 10 の新機能一覧 (提案一覧)
5
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/proposals/csharp-9.0/records など
/ 46
C# 10 の新機能一覧 (提案一覧)
6
https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/proposals/csharp-10.0/record-structs など
日本語機能名 英語 リンク
レコード構造体 Record structs リンク
パラメーターなしの構造体コンストラク
ター
Parameterless struct constructors リンク
グローバルな using ディレクティブ Global using directive リンク
ファイル スコープの名前空間 File scoped namespaces リンク
拡張プロパティのパターン Extended property patterns リンク
補間された文字列の改善 Improved interpolated strings リンク
定数の補間文字列 Constant interpolated strings リンク
ラムダの機能強化 Lambda improvements リンク
ラムダ属性 [ 該当ページなし ] [ 該当ページなし ]
呼び出し元の引数の式 Caller argument expression リンク
強化された #line ディレクティブ Enhanced #line directives リンク
汎用属性 Generic attributes リンク
明確な代入分析の改善 Improved definite assignment analysis リンク
AsyncMethodBuilder のオーバーライド AsyncMethodBuilder override リンク
ラムダ機能強化で
言及されている
/ 46
C# 10 の新機能一覧 (提案一覧)
7
https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/proposals/csharp-10.0/record-structs など
日本語機能名 英語 リンク
レコード構造体 Record structs リンク
パラメーターなしの構造体コンストラク
ター
Parameterless struct constructors リンク
グローバルな using ディレクティブ Global using directive リンク
ファイル スコープの名前空間 File scoped namespaces リンク
拡張プロパティのパターン Extended property patterns リンク
補間された文字列の改善 Improved interpolated strings リンク
定数の補間文字列 Constant interpolated strings リンク
ラムダの機能強化 Lambda improvements リンク
ラムダ属性 [ 該当ページなし ] [ 該当ページなし ]
呼び出し元の引数の式 Caller argument expression リンク
強化された #line ディレクティブ Enhanced #line directives リンク
汎用属性 Generic attributes リンク
明確な代入分析の改善 Improved definite assignment analysis リンク
AsyncMethodBuilder のオーバーライド AsyncMethodBuilder override リンク
超! 人気の機能
誰もがすぐに使いこなしだす
ライブラリ作成者など
誰もが触る機能ではない
/ 46
8
レコード構造体
•レ コ ー ド 構 造 体
•パ ラ メ ー タ ー な し の 構 造 体 コ ン ス ト ラ ク タ ー
•グ ロ ー バ ル な u s i n g デ ィ レ ク テ ィ ブ
•フ ァ イ ル ス コ ー プ の 名 前 空 間
•拡 張 プ ロ パ テ ィ の パ タ ー ン
•補 間 さ れ た 文 字 列 の 改 善
•定 数 の 補 間 文 字 列
•ラ ム ダ の 機 能 強 化
•呼 び 出 し 元 の 引 数 の 式
•強 化 さ れ た # l i n e デ ィ レ ク テ ィ ブ
•汎 用 属 性
•明 確 な 代 入 分 析 の 改 善
•A s y n c M e t h o d B u i l d e r の オ ー バ ー ラ イ ド
/ 46
レコード構造体
構造体をレコード型にできる (ただし標準
はミュータブル (変更可) )
9
record とつけると
レコード構造体になる
/ 46
レコード構造体
構造体をレコード型にできる (ただし標準
はミュータブル (変更可) )
10
readonly 構造体にして初めて
イミュータブル (不変)
色々なレコード型
record とつけると
レコード構造体になる
通常の構造体ではフィールド
にする必要がある
/ 46
レコード構造体
構造体をレコード型にできる (ただし標準
はミュータブル (変更可) )
11
readonly 構造体にして初めて
イミュータブル (不変)
レコードクラスは
イミュータブル (不変) なので
混同注意
/ 46
レコード構造体
レコード構造体でできるようになること
12
位置指定レコード
いい感じの ToString() の実装
== で比較が
できるようになる
通常の構造体では
どれもできない
/ 46
レコード構造体
with 式は通常の構造体でも使える
13
with 式は通常の構造体でも使
える
/ 46
14
パラメーターなしの構造体コンストラク
ター
•レ コ ー ド 構 造 体
•パ ラ メ ー タ ー な し の 構 造 体 コ ン ス ト ラ ク タ ー
•グ ロ ー バ ル な u s i n g デ ィ レ ク テ ィ ブ
•フ ァ イ ル ス コ ー プ の 名 前 空 間
•拡 張 プ ロ パ テ ィ の パ タ ー ン
•補 間 さ れ た 文 字 列 の 改 善
•定 数 の 補 間 文 字 列
•ラ ム ダ の 機 能 強 化
•呼 び 出 し 元 の 引 数 の 式
•強 化 さ れ た # l i n e デ ィ レ ク テ ィ ブ
•汎 用 属 性
•明 確 な 代 入 分 析 の 改 善
•A s y n c M e t h o d B u i l d e r の オ ー バ ー ラ イ ド
/ 46
パラメーターなしの構造体コンストラクター
構造体でパラメータのないコンストラクタ
を作れる
15
パラメータのないコンストラクター
/ 46
パラメーターなしの構造体コンストラクター
パラメータを受け取らなくても、フィール
ドは初期化される必要がある
16
フィールドの宣言で同時に
初期値をセットしているので OK
/ 46
パラメーターなしの構造体コンストラクター
パラメータを受け取らなくても、フィール
ドは初期化される必要がある
17
コンストラクター内で
初期値をセットしているので OK
/ 46
18
グローバルな using ディレクティブ
•レ コ ー ド 構 造 体
•パ ラ メ ー タ ー な し の 構 造 体 コ ン ス ト ラ ク タ ー
•グ ロ ー バ ル な u s i n g デ ィ レ ク テ ィ ブ
•フ ァ イ ル ス コ ー プ の 名 前 空 間
•拡 張 プ ロ パ テ ィ の パ タ ー ン
•補 間 さ れ た 文 字 列 の 改 善
•定 数 の 補 間 文 字 列
•ラ ム ダ の 機 能 強 化
•呼 び 出 し 元 の 引 数 の 式
•強 化 さ れ た # l i n e デ ィ レ ク テ ィ ブ
•汎 用 属 性
•明 確 な 代 入 分 析 の 改 善
•A s y n c M e t h o d B u i l d e r の オ ー バ ー ラ イ ド
/ 46
グローバルな using ディレクティブ
一つのファイルで using すると全てのファ
イルで using したものとなる
19
Class1 とは別のファイルに
書かれているソースコード
System.Text.StringBuilder クラス
が名前空間なしで使えている
using の前に global とつける
/ 46
暗黙的なグローバルな using ディレクティブ
.NET 6 のプロジェクトでは何もしなくても
使えてしまう名前空間がある
20
これまでであれば
using System;
using System.Ling;
が必要なコード
.NET 6 で作ったプロジェクトでは
using なしで使えてしまう
便利ではあるが破壊的変更
※独自の Console クラスや FirstOrDefault メソッドを作っていたら…
/ 46
暗黙的なグローバルな using ディレクティブ
暗黙的なグローバルな using は無効にでき
る
21
.csproj ファイルの
ImplicitUsings プロパティを消
す
または、
DisableImplicitNamespaceImports
プロパティを設定する
/ 46
暗黙的なグローバルな using ディレクティブ
暗黙的なグローバルな using を制御 (追加/
削除) する
22
追加/削除
/ 46
23
ファイル スコープの名前空間
•レ コ ー ド 構 造 体
•パ ラ メ ー タ ー な し の 構 造 体 コ ン ス ト ラ ク タ ー
•グ ロ ー バ ル な u s i n g デ ィ レ ク テ ィ ブ
•フ ァ イ ル ス コ ー プ の 名 前 空 間
•拡 張 プ ロ パ テ ィ の パ タ ー ン
•補 間 さ れ た 文 字 列 の 改 善
•定 数 の 補 間 文 字 列
•ラ ム ダ の 機 能 強 化
•呼 び 出 し 元 の 引 数 の 式
•強 化 さ れ た # l i n e デ ィ レ ク テ ィ ブ
•汎 用 属 性
•明 確 な 代 入 分 析 の 改 善
•A s y n c M e t h o d B u i l d e r の オ ー バ ー ラ イ ド
/ 46
ファイル スコープの名前空間
ファイル全体の名前空間を指定する
({ } なしで)
24
同じ意味
; が付くことに
注意
/ 46
25
拡張プロパティのパターン
•レ コ ー ド 構 造 体
•パ ラ メ ー タ ー な し の 構 造 体 コ ン ス ト ラ ク タ ー
•グ ロ ー バ ル な u s i n g デ ィ レ ク テ ィ ブ
•フ ァ イ ル ス コ ー プ の 名 前 空 間
•拡 張 プ ロ パ テ ィ の パ タ ー ン
•補 間 さ れ た 文 字 列 の 改 善
•定 数 の 補 間 文 字 列
•ラ ム ダ の 機 能 強 化
•呼 び 出 し 元 の 引 数 の 式
•強 化 さ れ た # l i n e デ ィ レ ク テ ィ ブ
•汎 用 属 性
•明 確 な 代 入 分 析 の 改 善
•A s y n c M e t h o d B u i l d e r の オ ー バ ー ラ イ ド
/ 46
拡張プロパティのパターン
パターンマッチでプロパティの値のプロパ
ティをシンプルに書ける
26
/ 46
27
補間された文字列の改善
•レ コ ー ド 構 造 体
•パ ラ メ ー タ ー な し の 構 造 体 コ ン ス ト ラ ク タ ー
•グ ロ ー バ ル な u s i n g デ ィ レ ク テ ィ ブ
•フ ァ イ ル ス コ ー プ の 名 前 空 間
•拡 張 プ ロ パ テ ィ の パ タ ー ン
•補 間 さ れ た 文 字 列 の 改 善
•定 数 の 補 間 文 字 列
•ラ ム ダ の 機 能 強 化
•呼 び 出 し 元 の 引 数 の 式
•強 化 さ れ た # l i n e デ ィ レ ク テ ィ ブ
•汎 用 属 性
•明 確 な 代 入 分 析 の 改 善
•A s y n c M e t h o d B u i l d e r の オ ー バ ー ラ イ ド
/ 46
補間された文字列の改善
ロギングフレームワークなどを想定した文字列
補完の効率化
28
二つ目、三つ目は SampleHandler が
引数のメソッドが呼ばれる
/ 46
補間された文字列の改善
29
二つ目のメソッドの場合
AppendLitera a
AppendFormatted System.Int32
AppendLitera b
AppendFormatted System.Int32
AppendLitera c
p
出力結果
/ 46
30
定数の補間文字列
•レ コ ー ド 構 造 体
•パ ラ メ ー タ ー な し の 構 造 体 コ ン ス ト ラ ク タ ー
•グ ロ ー バ ル な u s i n g デ ィ レ ク テ ィ ブ
•フ ァ イ ル ス コ ー プ の 名 前 空 間
•拡 張 プ ロ パ テ ィ の パ タ ー ン
•補 間 さ れ た 文 字 列 の 改 善
•定 数 の 補 間 文 字 列
•ラ ム ダ の 機 能 強 化
•呼 び 出 し 元 の 引 数 の 式
•強 化 さ れ た # l i n e デ ィ レ ク テ ィ ブ
•汎 用 属 性
•明 確 な 代 入 分 析 の 改 善
•A s y n c M e t h o d B u i l d e r の オ ー バ ー ラ イ ド
/ 46
定数の補間文字列
定数 (const sring) の宣言で補間文字列が使
える
31
/ 46
32
ラムダの機能強化
•レ コ ー ド 構 造 体
•パ ラ メ ー タ ー な し の 構 造 体 コ ン ス ト ラ ク タ ー
•グ ロ ー バ ル な u s i n g デ ィ レ ク テ ィ ブ
•フ ァ イ ル ス コ ー プ の 名 前 空 間
•拡 張 プ ロ パ テ ィ の パ タ ー ン
•補 間 さ れ た 文 字 列 の 改 善
•定 数 の 補 間 文 字 列
•ラ ム ダ の 機 能 強 化
•呼 び 出 し 元 の 引 数 の 式
•強 化 さ れ た # l i n e デ ィ レ ク テ ィ ブ
•汎 用 属 性
•明 確 な 代 入 分 析 の 改 善
•A s y n c M e t h o d B u i l d e r の オ ー バ ー ラ イ ド
/ 46
ラムダの機能強化
メソッドの引数部分でラムダを直接書く際
に属性、return の型を書ける
33
注意点。ラムダに属性をつける場合は引数
リストに ( ) が必要
/ 46
34
呼び出し元の引数の式
•レ コ ー ド 構 造 体
•パ ラ メ ー タ ー な し の 構 造 体 コ ン ス ト ラ ク タ ー
•グ ロ ー バ ル な u s i n g デ ィ レ ク テ ィ ブ
•フ ァ イ ル ス コ ー プ の 名 前 空 間
•拡 張 プ ロ パ テ ィ の パ タ ー ン
•補 間 さ れ た 文 字 列 の 改 善
•定 数 の 補 間 文 字 列
•ラ ム ダ の 機 能 強 化
•呼 び 出 し 元 の 引 数 の 式
•強 化 さ れ た # l i n e デ ィ レ ク テ ィ ブ
•汎 用 属 性
•明 確 な 代 入 分 析 の 改 善
•A s y n c M e t h o d B u i l d e r の オ ー バ ー ラ イ ド
/ 46
呼び出し元の引数の式
引数の式を文字列として受け取ることがで
きる
35
/ 46
36
強化された #line ディレクティブ
•レ コ ー ド 構 造 体
•パ ラ メ ー タ ー な し の 構 造 体 コ ン ス ト ラ ク タ ー
•グ ロ ー バ ル な u s i n g デ ィ レ ク テ ィ ブ
•フ ァ イ ル ス コ ー プ の 名 前 空 間
•拡 張 プ ロ パ テ ィ の パ タ ー ン
•補 間 さ れ た 文 字 列 の 改 善
•定 数 の 補 間 文 字 列
•ラ ム ダ の 機 能 強 化
•呼 び 出 し 元 の 引 数 の 式
•強 化 さ れ た # l i n e デ ィ レ ク テ ィ ブ
•汎 用 属 性
•明 確 な 代 入 分 析 の 改 善
•A s y n c M e t h o d B u i l d e r の オ ー バ ー ラ イ ド
/ 46
強化された #line ディレクティブ
#line ディレクティブで Razor などで正し
いソースコードのマッピングを取れなかっ
たものが取れるようになる
37
https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/proposals/csharp-10.0/async-method-builders
/ 46
38
汎用属性
•レ コ ー ド 構 造 体
•パ ラ メ ー タ ー な し の 構 造 体 コ ン ス ト ラ ク タ ー
•グ ロ ー バ ル な u s i n g デ ィ レ ク テ ィ ブ
•フ ァ イ ル ス コ ー プ の 名 前 空 間
•拡 張 プ ロ パ テ ィ の パ タ ー ン
•補 間 さ れ た 文 字 列 の 改 善
•定 数 の 補 間 文 字 列
•ラ ム ダ の 機 能 強 化
•呼 び 出 し 元 の 引 数 の 式
•強 化 さ れ た # l i n e デ ィ レ ク テ ィ ブ
•汎 用 属 性
•明 確 な 代 入 分 析 の 改 善
•A s y n c M e t h o d B u i l d e r の オ ー バ ー ラ イ ド
/ 46
汎用属性
属性でジェネリクスが使える
.csproj
39
/ 46
40
明確な代入分析の改善
•レ コ ー ド 構 造 体
•パ ラ メ ー タ ー な し の 構 造 体 コ ン ス ト ラ ク タ ー
•グ ロ ー バ ル な u s i n g デ ィ レ ク テ ィ ブ
•フ ァ イ ル ス コ ー プ の 名 前 空 間
•拡 張 プ ロ パ テ ィ の パ タ ー ン
•補 間 さ れ た 文 字 列 の 改 善
•定 数 の 補 間 文 字 列
•ラ ム ダ の 機 能 強 化
•呼 び 出 し 元 の 引 数 の 式
•強 化 さ れ た # l i n e デ ィ レ ク テ ィ ブ
•汎 用 属 性
•明 確 な 代 入 分 析 の 改 善
•A s y n c M e t h o d B u i l d e r の オ ー バ ー ラ イ ド
/ 46
明確な代入分析の改善
変数に値がセットされているかの分析が機
能するパターンが増えた
41
null 条件演算子
null 合体演算子
三項演算子
/ 46
42
AsyncMethodBuilder のオーバーライド
•レ コ ー ド 構 造 体
•パ ラ メ ー タ ー な し の 構 造 体 コ ン ス ト ラ ク タ ー
•グ ロ ー バ ル な u s i n g デ ィ レ ク テ ィ ブ
•フ ァ イ ル ス コ ー プ の 名 前 空 間
•拡 張 プ ロ パ テ ィ の パ タ ー ン
•補 間 さ れ た 文 字 列 の 改 善
•定 数 の 補 間 文 字 列
•ラ ム ダ の 機 能 強 化
•呼 び 出 し 元 の 引 数 の 式
•強 化 さ れ た # l i n e デ ィ レ ク テ ィ ブ
•汎 用 属 性
•明 確 な 代 入 分 析 の 改 善
•A s y n c M e t h o d B u i l d e r の オ ー バ ー ラ イ ド
/ 46
AsyncMethodBuilder のオーバーライド
非同期メソッド (async メソッド) をコンパイル
したときに使われる AsyncMethodBuilder のカ
スタマイズができる
43
https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/proposals/csharp-10.0/async-method-builders
/ 46
まとめ
44
/ 46
C# 10 の新機能一覧 (提案一覧)
45
https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/proposals/csharp-10.0/record-structs など
日本語機能名 英語 リンク
レコード構造体 Record structs リンク
パラメーターなしの構造体コンストラク
ター
Parameterless struct constructors リンク
グローバルな using ディレクティブ Global using directive リンク
ファイル スコープの名前空間 File scoped namespaces リンク
拡張プロパティのパターン Extended property patterns リンク
補間された文字列の改善 Improved interpolated strings リンク
定数の補間文字列 Constant interpolated strings リンク
ラムダの機能強化 Lambda improvements リンク
ラムダ属性 [ 該当ページなし ] [ 該当ページなし ]
呼び出し元の引数の式 Caller argument expression リンク
強化された #line ディレクティブ Enhanced #line directives リンク
汎用属性 Generic attributes リンク
明確な代入分析の改善 Improved definite assignment analysis リンク
AsyncMethodBuilder のオーバーライド AsyncMethodBuilder override リンク
超! 人気の機能
誰もがすぐに使いこなしだす
ライブラリ作成者など
誰もが触る機能ではない
/ 46
ありがとうございました。
46

Mais conteúdo relacionado

Semelhante a C#10

Hello Dark-Side C# (Part. 1)
Hello Dark-Side C# (Part. 1)Hello Dark-Side C# (Part. 1)
Hello Dark-Side C# (Part. 1)Yuto Takei
 
Dalvikバイトコードリファレンスの読み方 改訂版
Dalvikバイトコードリファレンスの読み方 改訂版Dalvikバイトコードリファレンスの読み方 改訂版
Dalvikバイトコードリファレンスの読み方 改訂版Takuya Matsunaga
 
Software Development with Symfony
Software Development with SymfonySoftware Development with Symfony
Software Development with SymfonyAtsuhiro Kubo
 
Inner world of Perl::Lint
Inner world of Perl::LintInner world of Perl::Lint
Inner world of Perl::Lintmoznion
 
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標Tomoharu ASAMI
 
Optimisation 2013-07-02
Optimisation 2013-07-02Optimisation 2013-07-02
Optimisation 2013-07-02kmiyako
 
DW テンプレートをマスターして 楽々サイトメンテナンス
DW テンプレートをマスターして 楽々サイトメンテナンスDW テンプレートをマスターして 楽々サイトメンテナンス
DW テンプレートをマスターして 楽々サイトメンテナンスAkira Maruyama
 
とあるDBAの黒い画面(ターミナル)
とあるDBAの黒い画面(ターミナル)とあるDBAの黒い画面(ターミナル)
とあるDBAの黒い画面(ターミナル)Kazuhiro Yoshikawa
 
Linux Kernel Seminar in tripodworks
Linux Kernel Seminar in tripodworksLinux Kernel Seminar in tripodworks
Linux Kernel Seminar in tripodworkstripodworks
 
Scalaプログラミング・マニアックス
Scalaプログラミング・マニアックスScalaプログラミング・マニアックス
Scalaプログラミング・マニアックスTomoharu ASAMI
 
Hokkaido.cap#1 Wiresharkの使い方(基礎編)
Hokkaido.cap#1 Wiresharkの使い方(基礎編)Hokkaido.cap#1 Wiresharkの使い方(基礎編)
Hokkaido.cap#1 Wiresharkの使い方(基礎編)Panda Yamaki
 
.NET Compiler Platform
.NET Compiler Platform.NET Compiler Platform
.NET Compiler Platform信之 岩永
 
PHPフレームワーク入門
PHPフレームワーク入門PHPフレームワーク入門
PHPフレームワーク入門Sho A
 
C# design note sep 2014
C# design note sep 2014C# design note sep 2014
C# design note sep 2014信之 岩永
 

Semelhante a C#10 (20)

NLP2012
NLP2012NLP2012
NLP2012
 
PHP版レガシーコード改善に役立つ新パターン #wewlc_jp
PHP版レガシーコード改善に役立つ新パターン #wewlc_jp PHP版レガシーコード改善に役立つ新パターン #wewlc_jp
PHP版レガシーコード改善に役立つ新パターン #wewlc_jp
 
Hello Dark-Side C# (Part. 1)
Hello Dark-Side C# (Part. 1)Hello Dark-Side C# (Part. 1)
Hello Dark-Side C# (Part. 1)
 
Dalvikバイトコードリファレンスの読み方 改訂版
Dalvikバイトコードリファレンスの読み方 改訂版Dalvikバイトコードリファレンスの読み方 改訂版
Dalvikバイトコードリファレンスの読み方 改訂版
 
Software Development with Symfony
Software Development with SymfonySoftware Development with Symfony
Software Development with Symfony
 
C# 3.0 以降
C# 3.0 以降C# 3.0 以降
C# 3.0 以降
 
Inner world of Perl::Lint
Inner world of Perl::LintInner world of Perl::Lint
Inner world of Perl::Lint
 
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
 
Optimisation 2013-07-02
Optimisation 2013-07-02Optimisation 2013-07-02
Optimisation 2013-07-02
 
DW テンプレートをマスターして 楽々サイトメンテナンス
DW テンプレートをマスターして 楽々サイトメンテナンスDW テンプレートをマスターして 楽々サイトメンテナンス
DW テンプレートをマスターして 楽々サイトメンテナンス
 
C++0x総復習
C++0x総復習C++0x総復習
C++0x総復習
 
とあるDBAの黒い画面(ターミナル)
とあるDBAの黒い画面(ターミナル)とあるDBAの黒い画面(ターミナル)
とあるDBAの黒い画面(ターミナル)
 
C++の復習
C++の復習C++の復習
C++の復習
 
Linux Kernel Seminar in tripodworks
Linux Kernel Seminar in tripodworksLinux Kernel Seminar in tripodworks
Linux Kernel Seminar in tripodworks
 
Scalaプログラミング・マニアックス
Scalaプログラミング・マニアックスScalaプログラミング・マニアックス
Scalaプログラミング・マニアックス
 
Hokkaido.cap#1 Wiresharkの使い方(基礎編)
Hokkaido.cap#1 Wiresharkの使い方(基礎編)Hokkaido.cap#1 Wiresharkの使い方(基礎編)
Hokkaido.cap#1 Wiresharkの使い方(基礎編)
 
.NET Compiler Platform
.NET Compiler Platform.NET Compiler Platform
.NET Compiler Platform
 
PHPフレームワーク入門
PHPフレームワーク入門PHPフレームワーク入門
PHPフレームワーク入門
 
C# design note sep 2014
C# design note sep 2014C# design note sep 2014
C# design note sep 2014
 
DNSのRFCの歩き方
DNSのRFCの歩き方DNSのRFCの歩き方
DNSのRFCの歩き方
 

Mais de 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# 9 のおすすめ新機能
C# 9 のおすすめ新機能C# 9 のおすすめ新機能
C# 9 のおすすめ新機能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
 

Mais de 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# 9 のおすすめ新機能
C# 9 のおすすめ新機能C# 9 のおすすめ新機能
C# 9 のおすすめ新機能
 
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#10

  • 1. / 46 C# 10 のおすすめ新機能 1 【オンライン】VISUAL STUDIO 2022 LAUNCH 記念 C# TOKYO イベント 2021年11月19日 石崎 充良
  • 2. / 46 自己紹介 石崎 充良 ( @mishi_cs ) C# Tokyo コミュニティ管理メンバー GitHub: https://github.com/m-ishizaki blog: https://rksoftware.hatenablog.com/ 2
  • 4. / 46 C# 7・8・9・10 の歴史 C# リリース ターゲット フレームワーク 7 2017/03 .NET Framework 8 2019/09 .NET Core 3.0 9 2020/11 .NET 5 10 2021/11 .NET 6 4
  • 5. / 46 C# 10 の新機能一覧 (提案一覧) 5 https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/proposals/csharp-9.0/records など
  • 6. / 46 C# 10 の新機能一覧 (提案一覧) 6 https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/proposals/csharp-10.0/record-structs など 日本語機能名 英語 リンク レコード構造体 Record structs リンク パラメーターなしの構造体コンストラク ター Parameterless struct constructors リンク グローバルな using ディレクティブ Global using directive リンク ファイル スコープの名前空間 File scoped namespaces リンク 拡張プロパティのパターン Extended property patterns リンク 補間された文字列の改善 Improved interpolated strings リンク 定数の補間文字列 Constant interpolated strings リンク ラムダの機能強化 Lambda improvements リンク ラムダ属性 [ 該当ページなし ] [ 該当ページなし ] 呼び出し元の引数の式 Caller argument expression リンク 強化された #line ディレクティブ Enhanced #line directives リンク 汎用属性 Generic attributes リンク 明確な代入分析の改善 Improved definite assignment analysis リンク AsyncMethodBuilder のオーバーライド AsyncMethodBuilder override リンク ラムダ機能強化で 言及されている
  • 7. / 46 C# 10 の新機能一覧 (提案一覧) 7 https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/proposals/csharp-10.0/record-structs など 日本語機能名 英語 リンク レコード構造体 Record structs リンク パラメーターなしの構造体コンストラク ター Parameterless struct constructors リンク グローバルな using ディレクティブ Global using directive リンク ファイル スコープの名前空間 File scoped namespaces リンク 拡張プロパティのパターン Extended property patterns リンク 補間された文字列の改善 Improved interpolated strings リンク 定数の補間文字列 Constant interpolated strings リンク ラムダの機能強化 Lambda improvements リンク ラムダ属性 [ 該当ページなし ] [ 該当ページなし ] 呼び出し元の引数の式 Caller argument expression リンク 強化された #line ディレクティブ Enhanced #line directives リンク 汎用属性 Generic attributes リンク 明確な代入分析の改善 Improved definite assignment analysis リンク AsyncMethodBuilder のオーバーライド AsyncMethodBuilder override リンク 超! 人気の機能 誰もがすぐに使いこなしだす ライブラリ作成者など 誰もが触る機能ではない
  • 8. / 46 8 レコード構造体 •レ コ ー ド 構 造 体 •パ ラ メ ー タ ー な し の 構 造 体 コ ン ス ト ラ ク タ ー •グ ロ ー バ ル な u s i n g デ ィ レ ク テ ィ ブ •フ ァ イ ル ス コ ー プ の 名 前 空 間 •拡 張 プ ロ パ テ ィ の パ タ ー ン •補 間 さ れ た 文 字 列 の 改 善 •定 数 の 補 間 文 字 列 •ラ ム ダ の 機 能 強 化 •呼 び 出 し 元 の 引 数 の 式 •強 化 さ れ た # l i n e デ ィ レ ク テ ィ ブ •汎 用 属 性 •明 確 な 代 入 分 析 の 改 善 •A s y n c M e t h o d B u i l d e r の オ ー バ ー ラ イ ド
  • 9. / 46 レコード構造体 構造体をレコード型にできる (ただし標準 はミュータブル (変更可) ) 9 record とつけると レコード構造体になる
  • 10. / 46 レコード構造体 構造体をレコード型にできる (ただし標準 はミュータブル (変更可) ) 10 readonly 構造体にして初めて イミュータブル (不変) 色々なレコード型 record とつけると レコード構造体になる 通常の構造体ではフィールド にする必要がある
  • 11. / 46 レコード構造体 構造体をレコード型にできる (ただし標準 はミュータブル (変更可) ) 11 readonly 構造体にして初めて イミュータブル (不変) レコードクラスは イミュータブル (不変) なので 混同注意
  • 12. / 46 レコード構造体 レコード構造体でできるようになること 12 位置指定レコード いい感じの ToString() の実装 == で比較が できるようになる 通常の構造体では どれもできない
  • 14. / 46 14 パラメーターなしの構造体コンストラク ター •レ コ ー ド 構 造 体 •パ ラ メ ー タ ー な し の 構 造 体 コ ン ス ト ラ ク タ ー •グ ロ ー バ ル な u s i n g デ ィ レ ク テ ィ ブ •フ ァ イ ル ス コ ー プ の 名 前 空 間 •拡 張 プ ロ パ テ ィ の パ タ ー ン •補 間 さ れ た 文 字 列 の 改 善 •定 数 の 補 間 文 字 列 •ラ ム ダ の 機 能 強 化 •呼 び 出 し 元 の 引 数 の 式 •強 化 さ れ た # l i n e デ ィ レ ク テ ィ ブ •汎 用 属 性 •明 確 な 代 入 分 析 の 改 善 •A s y n c M e t h o d B u i l d e r の オ ー バ ー ラ イ ド
  • 18. / 46 18 グローバルな using ディレクティブ •レ コ ー ド 構 造 体 •パ ラ メ ー タ ー な し の 構 造 体 コ ン ス ト ラ ク タ ー •グ ロ ー バ ル な u s i n g デ ィ レ ク テ ィ ブ •フ ァ イ ル ス コ ー プ の 名 前 空 間 •拡 張 プ ロ パ テ ィ の パ タ ー ン •補 間 さ れ た 文 字 列 の 改 善 •定 数 の 補 間 文 字 列 •ラ ム ダ の 機 能 強 化 •呼 び 出 し 元 の 引 数 の 式 •強 化 さ れ た # l i n e デ ィ レ ク テ ィ ブ •汎 用 属 性 •明 確 な 代 入 分 析 の 改 善 •A s y n c M e t h o d B u i l d e r の オ ー バ ー ラ イ ド
  • 19. / 46 グローバルな using ディレクティブ 一つのファイルで using すると全てのファ イルで using したものとなる 19 Class1 とは別のファイルに 書かれているソースコード System.Text.StringBuilder クラス が名前空間なしで使えている using の前に global とつける
  • 20. / 46 暗黙的なグローバルな using ディレクティブ .NET 6 のプロジェクトでは何もしなくても 使えてしまう名前空間がある 20 これまでであれば using System; using System.Ling; が必要なコード .NET 6 で作ったプロジェクトでは using なしで使えてしまう 便利ではあるが破壊的変更 ※独自の Console クラスや FirstOrDefault メソッドを作っていたら…
  • 21. / 46 暗黙的なグローバルな using ディレクティブ 暗黙的なグローバルな using は無効にでき る 21 .csproj ファイルの ImplicitUsings プロパティを消 す または、 DisableImplicitNamespaceImports プロパティを設定する
  • 22. / 46 暗黙的なグローバルな using ディレクティブ 暗黙的なグローバルな using を制御 (追加/ 削除) する 22 追加/削除
  • 23. / 46 23 ファイル スコープの名前空間 •レ コ ー ド 構 造 体 •パ ラ メ ー タ ー な し の 構 造 体 コ ン ス ト ラ ク タ ー •グ ロ ー バ ル な u s i n g デ ィ レ ク テ ィ ブ •フ ァ イ ル ス コ ー プ の 名 前 空 間 •拡 張 プ ロ パ テ ィ の パ タ ー ン •補 間 さ れ た 文 字 列 の 改 善 •定 数 の 補 間 文 字 列 •ラ ム ダ の 機 能 強 化 •呼 び 出 し 元 の 引 数 の 式 •強 化 さ れ た # l i n e デ ィ レ ク テ ィ ブ •汎 用 属 性 •明 確 な 代 入 分 析 の 改 善 •A s y n c M e t h o d B u i l d e r の オ ー バ ー ラ イ ド
  • 25. / 46 25 拡張プロパティのパターン •レ コ ー ド 構 造 体 •パ ラ メ ー タ ー な し の 構 造 体 コ ン ス ト ラ ク タ ー •グ ロ ー バ ル な u s i n g デ ィ レ ク テ ィ ブ •フ ァ イ ル ス コ ー プ の 名 前 空 間 •拡 張 プ ロ パ テ ィ の パ タ ー ン •補 間 さ れ た 文 字 列 の 改 善 •定 数 の 補 間 文 字 列 •ラ ム ダ の 機 能 強 化 •呼 び 出 し 元 の 引 数 の 式 •強 化 さ れ た # l i n e デ ィ レ ク テ ィ ブ •汎 用 属 性 •明 確 な 代 入 分 析 の 改 善 •A s y n c M e t h o d B u i l d e r の オ ー バ ー ラ イ ド
  • 27. / 46 27 補間された文字列の改善 •レ コ ー ド 構 造 体 •パ ラ メ ー タ ー な し の 構 造 体 コ ン ス ト ラ ク タ ー •グ ロ ー バ ル な u s i n g デ ィ レ ク テ ィ ブ •フ ァ イ ル ス コ ー プ の 名 前 空 間 •拡 張 プ ロ パ テ ィ の パ タ ー ン •補 間 さ れ た 文 字 列 の 改 善 •定 数 の 補 間 文 字 列 •ラ ム ダ の 機 能 強 化 •呼 び 出 し 元 の 引 数 の 式 •強 化 さ れ た # l i n e デ ィ レ ク テ ィ ブ •汎 用 属 性 •明 確 な 代 入 分 析 の 改 善 •A s y n c M e t h o d B u i l d e r の オ ー バ ー ラ イ ド
  • 29. / 46 補間された文字列の改善 29 二つ目のメソッドの場合 AppendLitera a AppendFormatted System.Int32 AppendLitera b AppendFormatted System.Int32 AppendLitera c p 出力結果
  • 30. / 46 30 定数の補間文字列 •レ コ ー ド 構 造 体 •パ ラ メ ー タ ー な し の 構 造 体 コ ン ス ト ラ ク タ ー •グ ロ ー バ ル な u s i n g デ ィ レ ク テ ィ ブ •フ ァ イ ル ス コ ー プ の 名 前 空 間 •拡 張 プ ロ パ テ ィ の パ タ ー ン •補 間 さ れ た 文 字 列 の 改 善 •定 数 の 補 間 文 字 列 •ラ ム ダ の 機 能 強 化 •呼 び 出 し 元 の 引 数 の 式 •強 化 さ れ た # l i n e デ ィ レ ク テ ィ ブ •汎 用 属 性 •明 確 な 代 入 分 析 の 改 善 •A s y n c M e t h o d B u i l d e r の オ ー バ ー ラ イ ド
  • 31. / 46 定数の補間文字列 定数 (const sring) の宣言で補間文字列が使 える 31
  • 32. / 46 32 ラムダの機能強化 •レ コ ー ド 構 造 体 •パ ラ メ ー タ ー な し の 構 造 体 コ ン ス ト ラ ク タ ー •グ ロ ー バ ル な u s i n g デ ィ レ ク テ ィ ブ •フ ァ イ ル ス コ ー プ の 名 前 空 間 •拡 張 プ ロ パ テ ィ の パ タ ー ン •補 間 さ れ た 文 字 列 の 改 善 •定 数 の 補 間 文 字 列 •ラ ム ダ の 機 能 強 化 •呼 び 出 し 元 の 引 数 の 式 •強 化 さ れ た # l i n e デ ィ レ ク テ ィ ブ •汎 用 属 性 •明 確 な 代 入 分 析 の 改 善 •A s y n c M e t h o d B u i l d e r の オ ー バ ー ラ イ ド
  • 34. / 46 34 呼び出し元の引数の式 •レ コ ー ド 構 造 体 •パ ラ メ ー タ ー な し の 構 造 体 コ ン ス ト ラ ク タ ー •グ ロ ー バ ル な u s i n g デ ィ レ ク テ ィ ブ •フ ァ イ ル ス コ ー プ の 名 前 空 間 •拡 張 プ ロ パ テ ィ の パ タ ー ン •補 間 さ れ た 文 字 列 の 改 善 •定 数 の 補 間 文 字 列 •ラ ム ダ の 機 能 強 化 •呼 び 出 し 元 の 引 数 の 式 •強 化 さ れ た # l i n e デ ィ レ ク テ ィ ブ •汎 用 属 性 •明 確 な 代 入 分 析 の 改 善 •A s y n c M e t h o d B u i l d e r の オ ー バ ー ラ イ ド
  • 36. / 46 36 強化された #line ディレクティブ •レ コ ー ド 構 造 体 •パ ラ メ ー タ ー な し の 構 造 体 コ ン ス ト ラ ク タ ー •グ ロ ー バ ル な u s i n g デ ィ レ ク テ ィ ブ •フ ァ イ ル ス コ ー プ の 名 前 空 間 •拡 張 プ ロ パ テ ィ の パ タ ー ン •補 間 さ れ た 文 字 列 の 改 善 •定 数 の 補 間 文 字 列 •ラ ム ダ の 機 能 強 化 •呼 び 出 し 元 の 引 数 の 式 •強 化 さ れ た # l i n e デ ィ レ ク テ ィ ブ •汎 用 属 性 •明 確 な 代 入 分 析 の 改 善 •A s y n c M e t h o d B u i l d e r の オ ー バ ー ラ イ ド
  • 37. / 46 強化された #line ディレクティブ #line ディレクティブで Razor などで正し いソースコードのマッピングを取れなかっ たものが取れるようになる 37 https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/proposals/csharp-10.0/async-method-builders
  • 38. / 46 38 汎用属性 •レ コ ー ド 構 造 体 •パ ラ メ ー タ ー な し の 構 造 体 コ ン ス ト ラ ク タ ー •グ ロ ー バ ル な u s i n g デ ィ レ ク テ ィ ブ •フ ァ イ ル ス コ ー プ の 名 前 空 間 •拡 張 プ ロ パ テ ィ の パ タ ー ン •補 間 さ れ た 文 字 列 の 改 善 •定 数 の 補 間 文 字 列 •ラ ム ダ の 機 能 強 化 •呼 び 出 し 元 の 引 数 の 式 •強 化 さ れ た # l i n e デ ィ レ ク テ ィ ブ •汎 用 属 性 •明 確 な 代 入 分 析 の 改 善 •A s y n c M e t h o d B u i l d e r の オ ー バ ー ラ イ ド
  • 40. / 46 40 明確な代入分析の改善 •レ コ ー ド 構 造 体 •パ ラ メ ー タ ー な し の 構 造 体 コ ン ス ト ラ ク タ ー •グ ロ ー バ ル な u s i n g デ ィ レ ク テ ィ ブ •フ ァ イ ル ス コ ー プ の 名 前 空 間 •拡 張 プ ロ パ テ ィ の パ タ ー ン •補 間 さ れ た 文 字 列 の 改 善 •定 数 の 補 間 文 字 列 •ラ ム ダ の 機 能 強 化 •呼 び 出 し 元 の 引 数 の 式 •強 化 さ れ た # l i n e デ ィ レ ク テ ィ ブ •汎 用 属 性 •明 確 な 代 入 分 析 の 改 善 •A s y n c M e t h o d B u i l d e r の オ ー バ ー ラ イ ド
  • 42. / 46 42 AsyncMethodBuilder のオーバーライド •レ コ ー ド 構 造 体 •パ ラ メ ー タ ー な し の 構 造 体 コ ン ス ト ラ ク タ ー •グ ロ ー バ ル な u s i n g デ ィ レ ク テ ィ ブ •フ ァ イ ル ス コ ー プ の 名 前 空 間 •拡 張 プ ロ パ テ ィ の パ タ ー ン •補 間 さ れ た 文 字 列 の 改 善 •定 数 の 補 間 文 字 列 •ラ ム ダ の 機 能 強 化 •呼 び 出 し 元 の 引 数 の 式 •強 化 さ れ た # l i n e デ ィ レ ク テ ィ ブ •汎 用 属 性 •明 確 な 代 入 分 析 の 改 善 •A s y n c M e t h o d B u i l d e r の オ ー バ ー ラ イ ド
  • 43. / 46 AsyncMethodBuilder のオーバーライド 非同期メソッド (async メソッド) をコンパイル したときに使われる AsyncMethodBuilder のカ スタマイズができる 43 https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/proposals/csharp-10.0/async-method-builders
  • 45. / 46 C# 10 の新機能一覧 (提案一覧) 45 https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/proposals/csharp-10.0/record-structs など 日本語機能名 英語 リンク レコード構造体 Record structs リンク パラメーターなしの構造体コンストラク ター Parameterless struct constructors リンク グローバルな using ディレクティブ Global using directive リンク ファイル スコープの名前空間 File scoped namespaces リンク 拡張プロパティのパターン Extended property patterns リンク 補間された文字列の改善 Improved interpolated strings リンク 定数の補間文字列 Constant interpolated strings リンク ラムダの機能強化 Lambda improvements リンク ラムダ属性 [ 該当ページなし ] [ 該当ページなし ] 呼び出し元の引数の式 Caller argument expression リンク 強化された #line ディレクティブ Enhanced #line directives リンク 汎用属性 Generic attributes リンク 明確な代入分析の改善 Improved definite assignment analysis リンク AsyncMethodBuilder のオーバーライド AsyncMethodBuilder override リンク 超! 人気の機能 誰もがすぐに使いこなしだす ライブラリ作成者など 誰もが触る機能ではない