WIP .NET 8 → .NET 10で使えるようになる機能
C#言語機能
各言語機能へのリンク
- C# 12 / .NET 8 https://learn.microsoft.com/ja-jp/dotnet/csharp/whats-new/csharp-12
- C# 13 / .NET 9 https://learn.microsoft.com/ja-jp/dotnet/csharp/whats-new/csharp-13
- C# 14 / .NET 10 preview https://learn.microsoft.com/ja-jp/dotnet/csharp/whats-new/csharp-14
一覧
- [C# 12] プライマリ コンストラクター
- [C# 12] コレクション式
- [C# 12] インライン配列
- [C# 12] ラムダ式の省略可能なパラメーター
- [C# 12] 任意の型の別名設定
- [C# 12] 試験段階の属性
- [C# 12] インターセプター
- [C# 13] params コレクション
- [C# 13] 新しい lock 型とセマンティクス。
- [C# 13] 新しいエスケープ シーケンス - \e。
- [C# 13] メソッド グループ自然型の改善
- [C# 13] オブジェクト初期化子での暗黙的インデクサー アクセス
- [C# 13] イテレーターと非同期メソッドで、ref ローカル変数と unsafe コンテキストを有効にする
- [C# 12] ref readonly パラメーター
- ref struct
- [C# 13] ref struct 型を有効にして、インターフェイスを実装します。
- [C# 13] ジェネリックの型パラメーターの引数として ref 構造体型を許可します。
- partial
- [C# 13] 部分プロパティとインデクサー が partial 型で許可されるようになりました。
- [C# 14] partial イベントとコンストラクター
- [C# 13] オーバーロード解決の優先順位 を使用すると、ライブラリ作成者は 1 つのオーバーロードを他のオーバーロードよりも優れたオーバーロードとして指定できます。
- [C# 14] 拡張メンバー
- [C# 14] nameof は、バインドされていないジェネリック型をサポートします
- [C# 14] Span<T> および ReadOnlySpan<T> のより暗黙的な変換
- [C# 14] 単純なラムダ パラメーターの修飾子
- [C# 13 preview / C# 14] field でサポートされるプロパティ
- [C# 14] Null 条件付き割り当て
- [C# 14] ユーザー定義複合代入演算子
言語機能
class / struct定義で使うもの
[C# 12] プライマリ コンストラクター
class / structでプライマリ コンストラクターは、record 型に制限されなくなりました。
public class Foo(string msg)
{
public string Msg { get; set; } = msg;
}
[C# 14] field でサポートされるプロパティ / field キーワード
C# 13 previewでも使用可能。
private string _msg;
public string Message
{
get => _msg;
set => _msg = value ?? throw new ArgumentNullException(nameof(value));
}
// C# 14
public string Message
{
get;
set => field = value ?? throw new ArgumentNullException(nameof(value));
}
[C# 14] partial イベントとコンストラクター
演算子
[C# 14] Null 条件付き割り当て
if (customer is not null)
{
customer.Order = GetCurrentOrder();
}
customer?.Order = GetCurrentOrder();
Attribute
[C# 12] 試験段階の属性
メソッドまたは型にアクセスする場合、コンパイラから警告が出ます。
[Experimental]
public void Add(int a, int b) => a + b;
-
[C# 14] ユーザー定義複合代入演算子
-
[C# 12] コレクション式
-
[C# 12] インライン配列
-
[C# 12] ラムダ式の省略可能なパラメーター
-
[C# 12] ref readonly パラメーター
-
[C# 12] 任意の型の別名設定
-
[C# 12] インターセプター
-
[C# 13] params コレクション
-
[C# 13] 新しい lock 型とセマンティクス。
-
[C# 13] 新しいエスケープ シーケンス - \e。
-
[C# 13] メソッド グループ自然型の改善
-
[C# 13] オブジェクト初期化子での暗黙的インデクサー アクセス
-
[C# 13] イテレーターと非同期メソッドで、ref ローカル変数と unsafe コンテキストを有効にする
-
[C# 13] ref struct 型を有効にして、インターフェイスを実装します。
-
[C# 13] ジェネリックの型パラメーターの引数として ref 構造体型を許可します。
-
[C# 13] 部分プロパティとインデクサー が partial 型で許可されるようになりました。
-
[C# 13] オーバーロード解決の優先順位 を使用すると、ライブラリ作成者は 1 つのオーバーロードを他のオーバーロードよりも優れたオーバーロードとして指定できます。
-
[C# 14] 拡張メンバー
-
[C# 14] nameof は、バインドされていないジェネリック型をサポートします
-
[C# 14] Span<T> および ReadOnlySpan<T> のより暗黙的な変換
-
[C# 14] 単純なラムダ パラメーターの修飾子