共用方式為


Lambda 忽略參數

注意

本文是功能規格。 規格可作為功能的設計檔。 其中包含建議的規格變更,以及功能設計和開發期間所需的資訊。 這些文章會發佈,直到提議的規格變更完成並併併入目前的ECMA規格為止。

功能規格與已完成實作之間可能有一些差異。 這些差異是在 語言設計會議(LDM)的相關紀錄中擷取的。

您可以在 規格一文中深入瞭解將功能規格納入 C# 語言標準的過程

總結

允許將忽略符號(_)用作 Lambda 和匿名方法的參數。 例如:

  • lambdas:(_, _) => 0(int _, int _) => 0
  • 匿名方法:delegate(int _, int _) { return 0; }

動機

未使用的參數不需要命名。 捨棄的意圖是清楚的,也就是它們未被使用/被捨棄。

詳細設計

方法參數 - §15.6.2 在 lambda 或匿名方法的參數清單中,具有多個參數且這些參數名為 _,這類參數是捨棄參數。 注意:如果單一參數命名為 _ 則為一般參數,因為回溯相容性原因。

捨棄參數不會將任何名稱引入至任何範圍。 請注意,這表示它們不會隱藏任何 _(下劃線)名稱。

簡單名稱(§12.8.4)如果 K 為零,且 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區塊