Open2

WIP .NET 8 → .NET 10で使えるようになる機能

kuroki-gkuroki-g

C#言語機能

各言語機能へのリンク

一覧

  • [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] ユーザー定義複合代入演算子
kuroki-gkuroki-g

言語機能

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] 単純なラムダ パラメーターの修飾子