次の方法で共有


ラムダ ディスカード パラメーター

手記

この記事は機能仕様です。 仕様は、機能の設計ドキュメントとして機能します。 これには、提案された仕様の変更と、機能の設計と開発時に必要な情報が含まれます。 これらの記事は、提案された仕様の変更が最終決定され、現在の ECMA 仕様に組み込まれるまで公開されます。

機能の仕様と完成した実装の間には、いくつかの違いがある可能性があります。 これらの違いは、関連する 言語設計会議 (LDM) ノートでキャプチャされます。

機能仕様を C# 言語標準に導入するプロセスの詳細については、仕様に関する記事を参照してください。

概要

破棄変数 (_) をラムダ式および匿名メソッドのパラメーターとして使用できるようにする。 例えば:

  • ラムダ: (_, _) => 0(int _, int _) => 0
  • 匿名メソッド: delegate(int _, int _) { return 0; }

モチベーション

未使用のパラメーターに名前を付ける必要はありません。 破棄の意図は明確です。つまり、使用されていないか破棄されます。

詳細な設計

メソッド パラメーター - §15.6.2_という名前の複数のパラメーターを持つラムダまたは匿名メソッドのパラメーター リストでは、このようなパラメーターは破棄パラメーターです。 注: 1 つのパラメーター _ 名前が付けられている場合、下位互換性の理由から通常のパラメーターになります。

破棄パラメーターは、どのスコープにも名前を導入しません。 これは、_ (アンダースコア) の名前が非表示になるわけではないことを意味していることに注意してください。

単純な名前 (§12.8.4) K が 0 で、simple_nameブロック 内に表示され、ブロック(または外側の ブロック) のローカル変数宣言空間(宣言 - §7.3)に、名前が Iのローカル変数、パラメーター(破棄パラメーターを除く)、または定数が含まれている場合、simple_name はそのローカル変数、パラメーター、または定数を参照し、変数または値として分類されます。

スコープ - §7.7 破棄パラメーターを除き、 lambda_expression (§12.19) で宣言されたパラメーターのスコープは、その lambda_expressionanonymous_function_body です。破棄パラメーターを除き、anonymous_method_expression (§12.19) で宣言されたパラメーターのスコープは、その anonymous_method_expressionブロック です。

  • 対応するパラメーター - §12.6.2.2