rksoftware

Visual Studio とか C# とかが好きです

C# 14 の情報を振り返る その8 / C# 14 (.NET 10 世代の C# ) 修飾子を使用した単純なラムダ パラメーター / modifiers-on-simple-lambda-parameters

C# 14 (.NET 10 世代の C# ) の機能、修飾子を使用した単純なラムダ パラメーター / modifiers-on-simple-lambda-parameters を見てみます。

■ これまでは

ラムダ式のパラメーター指定で、ref/in/out などで修飾されているパラメーターの型は省略することができなかった。
※ 特に修飾されていない場合は省略することができた。

■ これからは

ref/in/out で修飾されているパラメーターも省略可能。

■ コードで例

// これは以前からできた
Func0 func0 = (s) => s + s;                                                 // ref や in、out がつかない場合は、型を省略できる
Func1 func2 = (ref string s1, in string s2, out string s3) => s3 = s1 + s2; // 型を省略できない

// これができるようになった
Func1 func3 = (ref s1, in s2, out s3) => s3 = s1 + s2;  // 型を省略できるようになった
// Preview バージョンを指定していない場合のエラー
// 機能 'simple lambda parameter modifiers' は現在、プレビュー段階であり、*サポートされていません*。プレビュー機能を使用するには、'preview' 言語バージョンを使用してください。


// delegate 定義
public delegate string Func0(string arg1);
public delegate string Func1(ref string arg1, in string arg2, out string arg3);

■ 今回のコード

GitHub に上げています。

github.com

■ 備えよう

新機能、いいですね。リリースに備えましょう。